{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Начало лабораторной\n",
"\n",
"Цены на кофе - https://www.kaggle.com/datasets/mayankanand2701/starbucks-stock-price-dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Атрибуты\n",
"\n",
"Date — Дата\n",
"\n",
"Open — Открытие\n",
"\n",
"High — Макс. цена\n",
"\n",
"Low — Мин. цена\n",
"\n",
"Close — Закрытие\n",
"\n",
"Adj Close — Скорректированная цена закрытия\n",
"\n",
"Volume — Объем торгов"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Бизнес-цели\n",
"\n",
"__1. Оценка волатильности акций:__\n",
"\n",
"\n",
"Описание: Прогнозировать волатильность акций на основе изменений в ценах открытий, максимума, минимума и объема торгов.\n",
"Целевая переменная: Разница между высокой и низкой ценой (High - Low). (среднее значение)\n",
"\n",
"__2. Прогнозирование цены закрытия акций:__\n",
"\n",
"\n",
"Описание: Оценить, какая будет цена закрытия акций Starbucks на следующий день или через несколько дней на основе исторических данных.\n",
"Целевая переменная: Цена закрытия (Close). (среднее значение)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Определение достижимого уровня качества модели для первой задачи"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Подготовка данных__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Загрузка данных и создание целевой переменной"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Среднее значение поля 'Volume': 14704589.99726232\n",
" Date Open High Low Close Adj Close Volume \\\n",
"0 1992-06-26 0.328125 0.347656 0.320313 0.335938 0.260703 224358400 \n",
"1 1992-06-29 0.339844 0.367188 0.332031 0.359375 0.278891 58732800 \n",
"2 1992-06-30 0.367188 0.371094 0.343750 0.347656 0.269797 34777600 \n",
"3 1992-07-01 0.351563 0.359375 0.339844 0.355469 0.275860 18316800 \n",
"4 1992-07-02 0.359375 0.359375 0.347656 0.355469 0.275860 13996800 \n",
"\n",
" above_average_volume volatility \n",
"0 1 0.027343 \n",
"1 1 0.035157 \n",
"2 1 0.027344 \n",
"3 1 0.019531 \n",
"4 0 0.011719 \n"
]
}
],
"source": [
"import pandas as pd\n",
"from sklearn import set_config\n",
"\n",
"# Установим параметры для вывода\n",
"set_config(transform_output=\"pandas\")\n",
"\n",
"# Загружаем набор данных\n",
"df = pd.read_csv(\".//static//csv//Starbucks Dataset.csv\")\n",
"\n",
"# Устанавливаем случайное состояние\n",
"random_state = 42\n",
"\n",
"# Рассчитываем среднее значение объема\n",
"average_volume = df['Volume'].mean()\n",
"print(f\"Среднее значение поля 'Volume': {average_volume}\")\n",
"\n",
"# Создаем новую переменную, указывающую, превышает ли объем средний\n",
"df['above_average_volume'] = (df['Volume'] > average_volume).astype(int)\n",
"\n",
"# Рассчитываем волатильность (разницу между высокими и низкими значениями)\n",
"df['volatility'] = df['High'] - df['Low']\n",
"\n",
"# Выводим первые строки измененной таблицы для проверки\n",
"print(df.head())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n",
"\n",
"Целевой признак -- above_average_close"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'X_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_volume \n",
" volatility \n",
" \n",
" \n",
" \n",
" \n",
" 7159 \n",
" 2020-11-27 \n",
" 98.480003 \n",
" 98.980003 \n",
" 98.279999 \n",
" 98.660004 \n",
" 91.604065 \n",
" 2169700 \n",
" 0 \n",
" 0.700004 \n",
" \n",
" \n",
" 4505 \n",
" 2010-05-14 \n",
" 13.630000 \n",
" 13.665000 \n",
" 13.090000 \n",
" 13.255000 \n",
" 10.329099 \n",
" 23081800 \n",
" 1 \n",
" 0.575000 \n",
" \n",
" \n",
" 421 \n",
" 1994-02-24 \n",
" 0.710938 \n",
" 0.726563 \n",
" 0.695313 \n",
" 0.699219 \n",
" 0.542626 \n",
" 9264000 \n",
" 0 \n",
" 0.031250 \n",
" \n",
" \n",
" 1595 \n",
" 1998-10-19 \n",
" 2.371094 \n",
" 2.425781 \n",
" 2.277344 \n",
" 2.324219 \n",
" 1.803701 \n",
" 21284800 \n",
" 1 \n",
" 0.148437 \n",
" \n",
" \n",
" 3676 \n",
" 2007-01-30 \n",
" 17.594999 \n",
" 17.680000 \n",
" 17.260000 \n",
" 17.280001 \n",
" 13.410076 \n",
" 28372200 \n",
" 1 \n",
" 0.420000 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5976 \n",
" 2016-03-18 \n",
" 59.910000 \n",
" 60.450001 \n",
" 59.430000 \n",
" 59.700001 \n",
" 50.562347 \n",
" 14313600 \n",
" 0 \n",
" 1.020001 \n",
" \n",
" \n",
" 1305 \n",
" 1997-08-25 \n",
" 2.542969 \n",
" 2.703125 \n",
" 2.539063 \n",
" 2.679688 \n",
" 2.079561 \n",
" 28209600 \n",
" 1 \n",
" 0.164062 \n",
" \n",
" \n",
" 6085 \n",
" 2016-08-23 \n",
" 56.169998 \n",
" 56.540001 \n",
" 56.000000 \n",
" 56.400002 \n",
" 48.101521 \n",
" 7827900 \n",
" 0 \n",
" 0.540001 \n",
" \n",
" \n",
" 5470 \n",
" 2014-03-17 \n",
" 37.404999 \n",
" 37.494999 \n",
" 36.910000 \n",
" 37.090000 \n",
" 30.569410 \n",
" 11019800 \n",
" 0 \n",
" 0.584999 \n",
" \n",
" \n",
" 5781 \n",
" 2015-06-10 \n",
" 51.799999 \n",
" 52.860001 \n",
" 51.660000 \n",
" 52.689999 \n",
" 44.214481 \n",
" 8003600 \n",
" 0 \n",
" 1.200001 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 9 columns
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"7159 2020-11-27 98.480003 98.980003 98.279999 98.660004 91.604065 \n",
"4505 2010-05-14 13.630000 13.665000 13.090000 13.255000 10.329099 \n",
"421 1994-02-24 0.710938 0.726563 0.695313 0.699219 0.542626 \n",
"1595 1998-10-19 2.371094 2.425781 2.277344 2.324219 1.803701 \n",
"3676 2007-01-30 17.594999 17.680000 17.260000 17.280001 13.410076 \n",
"... ... ... ... ... ... ... \n",
"5976 2016-03-18 59.910000 60.450001 59.430000 59.700001 50.562347 \n",
"1305 1997-08-25 2.542969 2.703125 2.539063 2.679688 2.079561 \n",
"6085 2016-08-23 56.169998 56.540001 56.000000 56.400002 48.101521 \n",
"5470 2014-03-17 37.404999 37.494999 36.910000 37.090000 30.569410 \n",
"5781 2015-06-10 51.799999 52.860001 51.660000 52.689999 44.214481 \n",
"\n",
" Volume above_average_volume volatility \n",
"7159 2169700 0 0.700004 \n",
"4505 23081800 1 0.575000 \n",
"421 9264000 0 0.031250 \n",
"1595 21284800 1 0.148437 \n",
"3676 28372200 1 0.420000 \n",
"... ... ... ... \n",
"5976 14313600 0 1.020001 \n",
"1305 28209600 1 0.164062 \n",
"6085 7827900 0 0.540001 \n",
"5470 11019800 0 0.584999 \n",
"5781 8003600 0 1.200001 \n",
"\n",
"[6428 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" above_average_volume \n",
" \n",
" \n",
" \n",
" \n",
" 7159 \n",
" 0 \n",
" \n",
" \n",
" 4505 \n",
" 1 \n",
" \n",
" \n",
" 421 \n",
" 0 \n",
" \n",
" \n",
" 1595 \n",
" 1 \n",
" \n",
" \n",
" 3676 \n",
" 1 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5976 \n",
" 0 \n",
" \n",
" \n",
" 1305 \n",
" 1 \n",
" \n",
" \n",
" 6085 \n",
" 0 \n",
" \n",
" \n",
" 5470 \n",
" 0 \n",
" \n",
" \n",
" 5781 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 1 columns
\n",
"
"
],
"text/plain": [
" above_average_volume\n",
"7159 0\n",
"4505 1\n",
"421 0\n",
"1595 1\n",
"3676 1\n",
"... ...\n",
"5976 0\n",
"1305 1\n",
"6085 0\n",
"5470 0\n",
"5781 0\n",
"\n",
"[6428 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'X_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_volume \n",
" volatility \n",
" \n",
" \n",
" \n",
" \n",
" 312 \n",
" 1993-09-21 \n",
" 0.746094 \n",
" 0.753906 \n",
" 0.726563 \n",
" 0.734375 \n",
" 0.569909 \n",
" 8051200 \n",
" 0 \n",
" 0.027343 \n",
" \n",
" \n",
" 6118 \n",
" 2016-10-10 \n",
" 53.529999 \n",
" 53.599998 \n",
" 53.270000 \n",
" 53.299999 \n",
" 45.457634 \n",
" 7224300 \n",
" 0 \n",
" 0.329998 \n",
" \n",
" \n",
" 1775 \n",
" 1999-07-08 \n",
" 3.132813 \n",
" 3.140625 \n",
" 3.046875 \n",
" 3.078125 \n",
" 2.388767 \n",
" 43104000 \n",
" 1 \n",
" 0.093750 \n",
" \n",
" \n",
" 6621 \n",
" 2018-10-09 \n",
" 56.830002 \n",
" 59.700001 \n",
" 56.810001 \n",
" 57.709999 \n",
" 51.257065 \n",
" 24855700 \n",
" 1 \n",
" 2.890000 \n",
" \n",
" \n",
" 4363 \n",
" 2009-10-20 \n",
" 10.390000 \n",
" 10.475000 \n",
" 10.190000 \n",
" 10.265000 \n",
" 7.966110 \n",
" 11845000 \n",
" 0 \n",
" 0.285000 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 4472 \n",
" 2010-03-29 \n",
" 12.315000 \n",
" 12.385000 \n",
" 12.145000 \n",
" 12.305000 \n",
" 9.549243 \n",
" 13718000 \n",
" 0 \n",
" 0.240000 \n",
" \n",
" \n",
" 5944 \n",
" 2016-02-02 \n",
" 60.660000 \n",
" 60.900002 \n",
" 60.180000 \n",
" 60.700001 \n",
" 51.409283 \n",
" 9407400 \n",
" 0 \n",
" 0.720002 \n",
" \n",
" \n",
" 6839 \n",
" 2019-08-22 \n",
" 96.589996 \n",
" 96.849998 \n",
" 95.699997 \n",
" 96.489998 \n",
" 87.342232 \n",
" 5146200 \n",
" 0 \n",
" 1.150001 \n",
" \n",
" \n",
" 27 \n",
" 1992-08-05 \n",
" 0.425781 \n",
" 0.425781 \n",
" 0.402344 \n",
" 0.410156 \n",
" 0.318300 \n",
" 9516800 \n",
" 0 \n",
" 0.023437 \n",
" \n",
" \n",
" 3902 \n",
" 2007-12-20 \n",
" 10.075000 \n",
" 10.280000 \n",
" 10.025000 \n",
" 10.265000 \n",
" 7.966110 \n",
" 22996200 \n",
" 1 \n",
" 0.255000 \n",
" \n",
" \n",
"
\n",
"
1608 rows × 9 columns
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"312 1993-09-21 0.746094 0.753906 0.726563 0.734375 0.569909 \n",
"6118 2016-10-10 53.529999 53.599998 53.270000 53.299999 45.457634 \n",
"1775 1999-07-08 3.132813 3.140625 3.046875 3.078125 2.388767 \n",
"6621 2018-10-09 56.830002 59.700001 56.810001 57.709999 51.257065 \n",
"4363 2009-10-20 10.390000 10.475000 10.190000 10.265000 7.966110 \n",
"... ... ... ... ... ... ... \n",
"4472 2010-03-29 12.315000 12.385000 12.145000 12.305000 9.549243 \n",
"5944 2016-02-02 60.660000 60.900002 60.180000 60.700001 51.409283 \n",
"6839 2019-08-22 96.589996 96.849998 95.699997 96.489998 87.342232 \n",
"27 1992-08-05 0.425781 0.425781 0.402344 0.410156 0.318300 \n",
"3902 2007-12-20 10.075000 10.280000 10.025000 10.265000 7.966110 \n",
"\n",
" Volume above_average_volume volatility \n",
"312 8051200 0 0.027343 \n",
"6118 7224300 0 0.329998 \n",
"1775 43104000 1 0.093750 \n",
"6621 24855700 1 2.890000 \n",
"4363 11845000 0 0.285000 \n",
"... ... ... ... \n",
"4472 13718000 0 0.240000 \n",
"5944 9407400 0 0.720002 \n",
"6839 5146200 0 1.150001 \n",
"27 9516800 0 0.023437 \n",
"3902 22996200 1 0.255000 \n",
"\n",
"[1608 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" above_average_volume \n",
" \n",
" \n",
" \n",
" \n",
" 312 \n",
" 0 \n",
" \n",
" \n",
" 6118 \n",
" 0 \n",
" \n",
" \n",
" 1775 \n",
" 1 \n",
" \n",
" \n",
" 6621 \n",
" 1 \n",
" \n",
" \n",
" 4363 \n",
" 0 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 4472 \n",
" 0 \n",
" \n",
" \n",
" 5944 \n",
" 0 \n",
" \n",
" \n",
" 6839 \n",
" 0 \n",
" \n",
" \n",
" 27 \n",
" 0 \n",
" \n",
" \n",
" 3902 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
1608 rows × 1 columns
\n",
"
"
],
"text/plain": [
" above_average_volume\n",
"312 0\n",
"6118 0\n",
"1775 1\n",
"6621 1\n",
"4363 0\n",
"... ...\n",
"4472 0\n",
"5944 0\n",
"6839 0\n",
"27 0\n",
"3902 1\n",
"\n",
"[1608 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",
"def split_stratified_into_train_val_test(\n",
" df_input,\n",
" stratify_colname=\"y\",\n",
" frac_train=0.6,\n",
" frac_val=0.15,\n",
" frac_test=0.25,\n",
" random_state=None,\n",
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
" \n",
" if frac_train + frac_val + frac_test != 1.0:\n",
" raise ValueError(\n",
" \"fractions %f, %f, %f do not add up to 1.0\"\n",
" % (frac_train, frac_val, frac_test)\n",
" )\n",
" if stratify_colname not in df_input.columns:\n",
" raise ValueError(\"%s is not a column in the dataframe\" % (stratify_colname))\n",
" X = df_input # Contains all columns.\n",
" y = df_input[\n",
" [stratify_colname]\n",
" ] # Dataframe of just the column on which to stratify.\n",
" # Split original dataframe into train and temp dataframes.\n",
" df_train, df_temp, y_train, y_temp = train_test_split(\n",
" X, y, stratify=y, test_size=(1.0 - frac_train), random_state=random_state\n",
" )\n",
" if frac_val <= 0:\n",
" assert len(df_input) == len(df_train) + len(df_temp)\n",
" return df_train, pd.DataFrame(), df_temp, y_train, pd.DataFrame(), y_temp\n",
" # Split the temp dataframe into val and test dataframes.\n",
" relative_frac_test = frac_test / (frac_val + frac_test)\n",
" df_val, df_test, y_val, y_test = train_test_split(\n",
" df_temp,\n",
" y_temp,\n",
" stratify=y_temp,\n",
" test_size=relative_frac_test,\n",
" random_state=random_state,\n",
" )\n",
" assert len(df_input) == len(df_train) + len(df_val) + len(df_test)\n",
" return df_train, df_val, df_test, y_train, y_val, y_test\n",
"\n",
"X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n",
" df, stratify_colname=\"above_average_volume\", 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",
"pipeline_end -- основной конвейер предобработки данных и конструирования признаков"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.base import BaseEstimator, TransformerMixin\n",
"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",
"class StarbucksFeatures(BaseEstimator, TransformerMixin):\n",
" def __init__(self):\n",
" pass\n",
" def fit(self, X, y=None):\n",
" return self\n",
" def transform(self, X, y=None):\n",
" X[\"Length_to_Width_Ratio\"] = X[\"x\"] / X[\"y\"]\n",
" return X\n",
" def get_feature_names_out(self, features_in):\n",
" return np.append(features_in, [\"Length_to_Width_Ratio\"], axis=0)\n",
" \n",
"\n",
"columns_to_drop = [\"Date\"]\n",
"num_columns = [\"Close\", \"Open\", \"Adj Close\", \"High\", \"Low\", \"Volume\", \"above_average_volume\"]\n",
"cat_columns = []\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",
"\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",
" (\"prepocessing_cat\", preprocessing_cat, [\"Cabin_type\"]),\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": 263,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" numeric__Open \n",
" numeric__High \n",
" numeric__Low \n",
" numeric__Adj Close \n",
" numeric__Volume \n",
" \n",
" \n",
" \n",
" \n",
" 2484 \n",
" -0.717267 \n",
" -0.718936 \n",
" -0.721563 \n",
" -0.700283 \n",
" -0.304340 \n",
" \n",
" \n",
" 1576 \n",
" -0.835490 \n",
" -0.835755 \n",
" -0.834432 \n",
" -0.792049 \n",
" 1.970579 \n",
" \n",
" \n",
" 6595 \n",
" 0.665106 \n",
" 0.687359 \n",
" 0.679824 \n",
" 0.653502 \n",
" -0.279264 \n",
" \n",
" \n",
" 7412 \n",
" 2.358932 \n",
" 2.375059 \n",
" 2.374211 \n",
" 2.413670 \n",
" -0.380946 \n",
" \n",
" \n",
" 7413 \n",
" 2.400766 \n",
" 2.441531 \n",
" 2.359243 \n",
" 2.384602 \n",
" -0.515472 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5519 \n",
" 0.186241 \n",
" 0.192637 \n",
" 0.195457 \n",
" 0.119036 \n",
" -0.336428 \n",
" \n",
" \n",
" 4531 \n",
" -0.474942 \n",
" -0.473560 \n",
" -0.483945 \n",
" -0.505016 \n",
" 0.416194 \n",
" \n",
" \n",
" 535 \n",
" -0.864464 \n",
" -0.865282 \n",
" -0.863666 \n",
" -0.816533 \n",
" -0.502725 \n",
" \n",
" \n",
" 787 \n",
" -0.856235 \n",
" -0.857125 \n",
" -0.855130 \n",
" -0.809579 \n",
" -0.282496 \n",
" \n",
" \n",
" 7987 \n",
" 1.826366 \n",
" 1.814159 \n",
" 1.806921 \n",
" 1.972431 \n",
" 0.243087 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 5 columns
\n",
"
"
],
"text/plain": [
" numeric__Open numeric__High numeric__Low numeric__Adj Close \\\n",
"2484 -0.717267 -0.718936 -0.721563 -0.700283 \n",
"1576 -0.835490 -0.835755 -0.834432 -0.792049 \n",
"6595 0.665106 0.687359 0.679824 0.653502 \n",
"7412 2.358932 2.375059 2.374211 2.413670 \n",
"7413 2.400766 2.441531 2.359243 2.384602 \n",
"... ... ... ... ... \n",
"5519 0.186241 0.192637 0.195457 0.119036 \n",
"4531 -0.474942 -0.473560 -0.483945 -0.505016 \n",
"535 -0.864464 -0.865282 -0.863666 -0.816533 \n",
"787 -0.856235 -0.857125 -0.855130 -0.809579 \n",
"7987 1.826366 1.814159 1.806921 1.972431 \n",
"\n",
" numeric__Volume \n",
"2484 -0.304340 \n",
"1576 1.970579 \n",
"6595 -0.279264 \n",
"7412 -0.380946 \n",
"7413 -0.515472 \n",
"... ... \n",
"5519 -0.336428 \n",
"4531 0.416194 \n",
"535 -0.502725 \n",
"787 -0.282496 \n",
"7987 0.243087 \n",
"\n",
"[6428 rows x 5 columns]"
]
},
"execution_count": 263,
"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 -- многослойный персептрон (нейронная сеть)"
]
},
{
"cell_type": "code",
"execution_count": 224,
"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": 225,
"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": 226,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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OCxatAjnzp3DyZMnsWbNGnzyyScmjYeIiOifmM3MZqpGct/0RObz95s+TWm/efOmOGDAALFWrVqig4ODWK9ePXHo0KFiTk6OKIolN3mOHj1aVKvVooeHhzhu3DhxwIABFd70KYqi+ODBA3Hs2LFiQECAaG9vL4aGhoqrV6/Wt8+ePVv09/cXBUEQBw4cKIpiyY2qCxcuFBs0aCDa2dmJPj4+YlRUlLh3717953766ScxNDRUdHBwENu3by+uXr3a5Js+J0yYIHp7e4uurq7i//3f/4kLFiwQ3d3d9e0zZswQmzVrJi5dulQMDAwUHR0dxVdffVXMysoy2O6GDRvE5s2bi/b29qKnp6f43HPPiZs3bxZFkTd9EhFRCWZz+ZjNZCkEUazgTj0iIiIiIiIF4WV1REREREREYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFEREREREREQAWR0RERERERABYHBEREREREQFgcURERERERASAxREREREREREAFkdEREREREQAWBwREREREREBYHGkKDNnzoQgCBaz7cuXL0MQBKxdu9YsYyIiIqLKlWb47du35R4KkexYHJHibd++HTNnzpR7GEREREQkMxZHJImpU6fiwYMHJn0mODgYDx48wOuvv26mUVXN9u3bMWvWLFnHQERERETys5V7AGQdbG1tYWtr2r9OgiDA0dHRTCMyj+LiYuh0Otjb28s9FCIiIiKSGGeOrNT+/fvx1FNPwdHREfXr18fnn39ebr///Oc/aNWqFZycnODl5YW+ffsiLS2tTL+kpCS8+OKL8PT0hIuLC5o2bYpPP/1U317ePUcJCQlo164dPDw84OrqigYNGuCdd97Rt1d0z9GuXbvQvn17uLi4wMPDAz169EBycrJBn9Lvu3DhAmJiYuDh4QF3d3cMGjQI9+/fr/LvKSYmBkuWLAFQUqyVLn8f30cffYSFCxeifv36cHBwwJkzZwAAZ8+exauvvgovLy84OjqidevW2Lp1a5nvyM7OxpgxYxAUFAQHBweEhobigw8+gE6nq/I4iYiIqtOVK1cQGhqKxo0bIyMjA88//zwaN26MM2fO4IUXXoCzszMee+wxzJ8/3+Bze/bsgSAI+Oabb/Dee++hdu3acHR0RKdOnXDhwgWZ9oao6jhzZIVOnjyJ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mCv1iIiIiIiIFISn1REREREREYHFEREREREREQAWR0RERERERABYHBEREREREQFgcURERERERASAxREREREREREAFkdEREREREQAWBwREREREREBYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFEREREREREQAWR1RGL7zwAl544QXZx9CwYUNZx0BERFTeVCoVZsyYIf28du1aqFQqXL16VbYxGRMVFQWVSoWtW7fKPZQyuXr1KlQqFdauXSv3UMgMsDgiIiIiIgBAZmYmZsyYgaioKLmHYnIbN27EwoUL5R4GmTkruQdAFcvevXvlHgIREZEiDRw4EP369YNarS6398jMzMTMmTMBQPYzRUxt48aNOHPmDMaNG2ew3sfHB48ePYK1tbU8AyOzwuKIysTGxkbuIRAREZktvV6PnJwc2NramnzblpaWsLS0NPl2lU6lUpXLfy+qmHhaXSU3Y8YMqFQqXLx4EWFhYXB2doaTkxMGDx6MzMxMqd+aNWvQsWNHuLu7Q61Ww9/fH8uWLSu0vX9ec5SUlAQrKyvpCNM/xcfHQ6VS4csvv5TWpaamYty4cfD29oZarYafnx/mzp0LvV7/WPt24sQJtG7dGnZ2dvD19cXy5csN2nNycjBt2jQ0b94cTk5OsLe3R7t27bB//36pjxACNWvWRK9evQptPysrC05OTnjrrbekddnZ2Zg+fTr8/PygVqvh7e2NyZMnIzs72+C1kZGRaNu2LZydneHg4IC6devivffee6z9JCIieURFRaFFixawtbVF7dq1sWLFCilXC6hUKowePRobNmxAgwYNoFarERERAQD47LPP0Lp1a1StWhV2dnZo3rx5kdfjZGdnY/z48XBzc4OjoyN69uyJGzduFOpX3DVHe/bsQbt27WBvbw9HR0d0794dZ8+eNegTFhYGBwcH3Lx5E71794aDgwPc3NwwceJE6HQ6APnX3ri5uQEAZs6cCZVKVei6p9LQ6XR477334OnpCXt7e/Ts2RMJCQmF+n333Xdo3rw57OzsUK1aNQwYMAA3b94s1O/XX3+V9s/Z2Rm9evVCXFycQZ8HDx5g3LhxqFmzJtRqNdzd3dG5c2ecPHkSQP7fL7t378a1a9ek/apZs6a03/++5qg0n1eBe/fuYeDAgdBoNHB2dkZoaChOnz7N65gqKM4cKUTfvn3h6+uL8PBwnDx5El999RXc3d0xd+5cAMCyZcvQoEED9OzZE1ZWVti5cydGjhwJvV6PUaNGFblNDw8PdOjQAVu2bMH06dMN2jZv3gxLS0v85z//AZA/Td+hQwfcvHkTb731FmrUqIEjR45g6tSpuH37dpnPAb5//z5eeukl9O3bF/3798eWLVswYsQI2NjYYMiQIQCA9PR0fPXVV+jfvz+GDRuGBw8e4Ouvv0ZwcDB+//13NG3aFCqVCgMGDMC8efOQkpICV1dX6T127tyJ9PR0DBgwAED+0cCePXvi8OHDGD58OOrXr48///wTCxYswPnz57F9+3YAwNmzZ/Hyyy+jcePGmDVrFtRqNS5evIjo6Ogy7SMREcnn1KlT6Nq1K7y8vDBz5kzodDrMmjVLKh7+6ddff8WWLVswevRoVKtWTfqj+4svvkDPnj0REhKCnJwcbNq0Cf/5z3+wa9cudO/eXXr9m2++if/+979444030Lp1a/z6668G7cZ88803CA0NRXBwMObOnYvMzEwsW7YMbdu2xalTp6SxAPlFS3BwMFq1aoXPPvsMv/zyC+bPn4/atWtjxIgRcHNzw7JlyzBixAi88sor6NOnDwCgcePGZfrsPv74Y6hUKkyZMgXJyclYuHAhgoKCEBsbCzs7OwD5hd7gwYPx3HPPITw8HElJSfjiiy8QHR2NU6dOwdnZGQDwyy+/oFu3bqhVqxZmzJiBR48eYfHixWjTpg1Onjwp7d/bb7+NrVu3YvTo0fD398e9e/dw+PBhxMXFoVmzZnj//feRlpaGGzduYMGCBQAABwcHo/tR0ucF5P9t0KNHD/z+++8YMWIE6tWrhx9//BGhoaFl+szIjAiq1KZPny4AiCFDhhisf+WVV0TVqlWlnzMzMwu9Njg4WNSqVctgXYcOHUSHDh2kn1esWCEAiD///NOgn7+/v+jYsaP08+zZs4W9vb04f/68Qb93331XWFpaiuvXr5d6nzp06CAAiPnz50vrsrOzRdOmTYW7u7vIyckRQgiRl5cnsrOzDV57//594eHhYfB5xMfHCwBi2bJlBn179uwpatasKfR6vRBCiG+++UZYWFiIQ4cOGfRbvny5ACCio6OFEEIsWLBAABB37twp9T4REZF56dGjh6hSpYq4efOmtO7ChQvCyspK/PPPJwDCwsJCnD17ttA2/p2tOTk5omHDhgb5GBsbKwCIkSNHGvR94403BAAxffp0ad2aNWsEAHHlyhUhhBAPHjwQzs7OYtiwYQavTUxMFE5OTgbrQ0NDBQAxa9Ysg74BAQGiefPm0s937twp9L6ltX//fgFAPPPMMyI9PV1av2XLFgFAfPHFF9Ln4O7uLho2bCgePXok9du1a5cAIKZNmyatK8j2e/fuSetOnz4tLCwsxKBBg6R1Tk5OYtSoUUbH1717d+Hj41No/ZUrVwQAsWbNGmldaT+v77//XgAQCxculNbpdDrRsWPHQtukioGn1SnE22+/bfBzu3btcO/ePaSnpwOAdCQHANLS0nD37l106NABly9fRlpaWrHb7dOnD6ysrLB582Zp3ZkzZ/DXX3/h9ddfl9Z99913aNeuHVxcXHD37l1pCQoKgk6nw8GDB8u0P1ZWVganu9nY2OCtt95CcnIyTpw4ASD/3OyCa6T0ej1SUlKQl5eHFi1aSNPsAFCnTh20atUKGzZskNalpKRgz549CAkJkU6f+O6771C/fn3Uq1fPYB86duwIANLpegVHu3788cfHPmWQiIjko9Pp8Msvv6B3797QarXSej8/P3Tr1q1Q/w4dOsDf37/Q+n9m6/3795GWloZ27doZZNBPP/0EABgzZozBa/9904CiREZGIjU1Ff379zfIJUtLS7Rq1crgNPICRf09cPny5RLfqywGDRoER0dH6efXXnsNXl5e0r4eP34cycnJGDlypMG1Pt27d0e9evWwe/duAMDt27cRGxuLsLAwgzM7GjdujM6dO0vbA/KzNyYmBrdu3TLpvpT0eUVERMDa2hrDhg2T1llYWBR71g2ZPxZHClGjRg2Dn11cXADkf1kDQHR0NIKCgqTzed3c3KRrZIwVR9WqVUOnTp2wZcsWad3mzZthZWUlTccDwIULFxAREQE3NzeDJSgoCACQnJxcpv3RarWwt7c3WFenTh0AMDgXe926dWjcuDFsbW1RtWpVuLm5Yffu3YX2adCgQYiOjsa1a9cA5BdCubm5GDhwoME+nD17ttA+FLxvwT68/vrraNOmDd588014eHigX79+2LJlCwslIqIKIjk5GY8ePYKfn1+htqLW+fr6FrmdXbt24fnnn4etrS1cXV2l09b+mUHXrl2DhYUFateubfDaunXrljjOCxcuAAA6duxYKJv2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jhw5Ap1Oh4SEhEbdJyIiahhms7KYzSQXFkfN0MGDB6td6zphwgQcOXIEc+bMQWxsLPR6PcLDwzFkyBA4OTlBp9Phq6++wooVK1BSUoLw8HC8/fbbePLJJ1FQUIALFy5gy5Yt+OmnnxAcHIykpCT87//+r0J7aP90Ol2NfUuXLoXZbMaYMWNw+/ZtREVF4fPPP0eLFi1q3ebixYvRqlUrpKSk4NKlS/D19UXPnj3xl7/8Re7hExGRzJjNymM2kxwkIYRQehBERERERERK4z1HREREREREYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFEREREREREQAWR0RERERERABYHJFMEhMTMWzYMMvPjz32GKZPn97k4zh48CAkSUJRUVGN60iShI8//rje21ywYAG6d+/eoHFdvnwZkiThzJkzDdoOERFRfTGba8dspvthceTAEhMTIUkSJEmCm5sbIiIisGjRIlRWVjb6d+/cuROLFy+u17r1OWgSERE5AmYzkX1zUXoA1LiGDBmCTZs2Qa/XY+/evUhKSoKrqyvmzZtXbV2DwQA3NzdZvtfPz0+W7RARETkaZjOR/eLMkYPTaDQICgpCeHg4Jk2ahJiYGHzyyScAfpluf/PNNxESEoKOHTsCAPLy8jBixAj4+vrCz88PQ4cOxeXLly3bNJlMmDFjBnx9feHv74/Zs2dDCGH1vb+eutfr9ZgzZw5CQ0Oh0WgQERGBDRs24PLly3j88ccBAC1atIAkSUhMTAQAmM1mpKSkoG3btnB3d0e3bt2wfft2q+/Zu3cvOnToAHd3dzz++ONW46yvOXPmoEOHDvDw8EC7du3w2muvwWg0Vltv3bp1CA0NhYeHB0aMGIHi4mKr/n/84x/o3LkztFotOnXqhNWrV9s8FiIicnzM5roxm0kpLI5Uxt3dHQaDwfLz/v37kZWVhbS0NOzZswdGoxFxcXHw9vbGoUOHcOTIEXh5eWHIkCGWz7399tvYvHkzNm7ciMOHD6OwsBC7du2q9XvHjh2L//u//8PKlSuRmZmJdevWwcvLC6GhodixYwcAICsrCzdu3MA777wDAEhJScH777+PtWvX4vz580hOTsbo0aORnp4OoCoonn32WTz99NM4c+YM/vSnP2Hu3Lk2/068vb2xefNmfPfdd3jnnXewfv16LF++3Gqdixcv4sMPP8Tu3buxb98+nD59Gi+//LKlf+vWrXj99dfx5ptvIjMzE0uWLMFrr72GLVu22DweIiJSF2ZzdcxmUowgh5WQkCCGDh0qhBDCbDaLtLQ0odFoxMyZMy39gYGBQq/XWz7zz3/+U3Ts2FGYzWZLm16vF+7u7uLzzz8XQggRHBwsli1bZuk3Go2idevWlu8SQoiBAweKadOmCSGEyMrKEgBEWlrafcd54MABAUD8/PPPlraKigrh4eEhjh49arXuhAkTxMiRI4UQQsybN09ERkZa9c+ZM6fatn4NgNi1a1eN/W+99Zbo1auX5ef58+cLZ2dncfXqVUvbZ599JpycnMSNGzeEEEK0b99epKamWm1n8eLFIjo6WgghRE5OjgAgTp8+XeP3EhGR42M23x+zmewF7zlycHv27IGXlxeMRiPMZjP++Mc/YsGCBZb+Ll26WF3LfPbsWVy8eBHe3t5W26moqEB2djaKi4tx48YN9OnTx9Ln4uKCqKioatP3d505cwbOzs4YOHBgvcd98eJFlJeXY/DgwVbtBoMBPXr0AABkZmZajQMAoqOj6/0dd33wwQdYuXIlsrOzUVpaisrKSuh0Oqt1wsLC8NBDD1l9j9lsRlZWFry9vZGdnY0JEyZg4sSJlnUqKyvh4+Nj83iIiMixMZvrxmwmpbA4cnCPP/441qxZAzc3N4SEhMDFxfqv3NPT0+rn0tJS9OrVC1u3bq22rVatWj3QGNzd3W3+TGlpKQDg008/tTrwAVXXasslIyMDo0aNwsKFCxEXFwcfHx9s27YNb7/9ts1jXb9+fbVAcHZ2lm2sRETkGJjNtWM2k5JYHDk4T09PRERE1Hv9nj174oMPPkBAQEC1MzR3BQcH49ixYxgwYACAqrMwJ0+eRM+ePe+7fpcuXWA2m5Geno6YmJhq/XfPjplMJktbZGQkNBoNcnNzazyr1blzZ8sNrHd9/fXXde/kPY4ePYrw8HC88sorlrYrV65UWy83NxfXr19HSEiI5XucnJzQsWNHBAYGIiQkBJcuXcKoUaNs+n4iIlIfZnPtmM2kJD6QgayMGjUKLVu2xNChQ3Ho0CHk5OTg4MGDmDp1Kq5evQoAmDZtGpYuXYqPP/4YFy5cwMsvv1zrexDatGmDhIQEjB8/Hh9//LFlmx9++CEAIDw8HJIkYc+ePbh16xZKS0vh7e2NmTNnIjk5GVu2bEF2djZOnTqFd99913Ij5UsvvYQffvgBs2bNQlZWFlJTU7F582ab9vfhhx9Gbm4utm3bhuzsbKxcufK+N7BqtVokJCTg7NmzOHToEKZOnYoRI0YgKCgIALBw4UKkpKRg5cqV+P7773Hu3Dls2rQJf//7320aDxER0a8xm5nN1ISUvumJGs+9N33a0n/jxg0xduxY0bJlS6HRaES7du3ExIkTRXFxsRCi6ibPadOmCZ1OJ3x9fcWMGTPE2LFja7zpUwgh7ty5I5KTk0VwcLBwc3MTERERYuPGjZb+RYsWiaCgICFJkkhISBBCVN2oumLFCtGxY0fh6uoqWrVqJeLi4kR6errlc7t37xYRERFCo9GIRx99VGzcuNHmmz5nzZol/P39hZeXl3j++efF8uXLhY+Pj6V//vz5olu3bmL16tUiJCREaLVa8dxzz4nCwkKr7W7dulV0795duLm5iRYtWogBAwaInTt3CiF40ycREVVhNt8fs5nshSREDXfqERERERERqQgvqyMiIiIiIgKLIyIiIiIiIgAsjoiIiIiIiACwOCIiIiIiIgLA4oiIiIiIiAgAiyMiIiIiIiIALI6IiIiIiIgAsDgiIiIiIiICwOKIiIiIiIgIAIsjIiIiIiIiACyOiIiIiIiIAAD/HzQxcz3pB4uRAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"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=[\"Less\", \"More\"]\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": [
"1045: Это количество истинных положительных диагнозов (True Positives), где модель правильно определила объекты как \"More\".\n",
"\n",
"563: Это количество ложных отрицательных диагнозов (False Negatives), где модель неправильно определила объекты, которые на самом деле принадлежат к классу \"More\", отнесёнными к классу \"Less\".\n",
"\n",
"Исходя из значений True Positives и False Negatives, можно сказать, что модель имеет высокую точность при предсказании класса \"More\". Однако, высокий уровень ложных отрицательных результатов (563) указывает на то, что существует значительное количество примеров, которые модель пропускает. Это может означать, что в некоторых случаях она не распознаёт объекты, которые должны быть классифицированы как \"More\".\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Точность, полнота, верность (аккуратность), F-мера"
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \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",
" \n",
" \n",
" logistic \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" ridge \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" decision_tree \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" knn \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" naive_bayes \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" gradient_boosting \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" random_forest \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" mlp \n",
" 1.000000 \n",
" 1.000000 \n",
" 0.994222 \n",
" 0.994671 \n",
" 0.997978 \n",
" 0.998134 \n",
" 0.997103 \n",
" 0.997329 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 227,
"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) — демонстрируют идеальные значения по всем метрикам на обучающих и тестовых наборах данных. Это достигается, поскольку все модели показали значения, равные 1.0 для Precision, Recall, Accuracy и F1-меры, что указывает на то, что модель безошибочно классифицирует все примеры.\n",
"\n",
"Модель MLP, хотя и имеет немного более низкие значения Recall (0.994) и F1-на тестовом наборе (0.997) по сравнению с другими, по-прежнему остается высокоэффективной. Тем не менее, она не снижает показатели классификации до такого уровня, что может вызвать обеспокоенность, и остается на уровне, близком к идеальному."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
" Accuracy_test \n",
" F1_test \n",
" ROC_AUC_test \n",
" Cohen_kappa_test \n",
" MCC_test \n",
" \n",
" \n",
" \n",
" \n",
" logistic \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" ridge \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" decision_tree \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" knn \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" naive_bayes \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" gradient_boosting \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" random_forest \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" mlp \n",
" 0.998134 \n",
" 0.997329 \n",
" 1.000000 \n",
" 0.995895 \n",
" 0.995904 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 228,
"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": [
"Все модели, включая логистическую регрессию, ридж-регрессию, дерево решений, KNN, наивный байесовский классификатор, градиентный бустинг и случайный лес, продемонстрировали идеальные значения по всем метрикам: Accuracy, F1, ROC AUC, Cohen's Kappa и MCC, достигнув максимальных значений, равных 1. Это подчеркивает их эффективность в контексте анализа и классификации данных.\n",
"\n",
"Модель MLP, хотя и показала очень высокие результаты, несколько уступает конкурентам по показателям Accuracy (0.998) и F1 (0.997). Несмотря на это, она достигает оптимального значения ROC AUC (1.000), что указывает на ее способность к выделению классов. Показатели Cohen's Kappa (0.996) и MCC (0.996) также находятся на высоком уровне, что говорит о хорошей согласованности и строгости классификации."
]
},
{
"cell_type": "code",
"execution_count": 229,
"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": 230,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Error items count: 0'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Predicted \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_volume \n",
" volatility \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [Date, Predicted, Open, High, Low, Close, Adj Close, Volume, above_average_volume, volatility]\n",
"Index: []"
]
},
"execution_count": 230,
"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[\"above_average_volume\"] != 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": 231,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_volume \n",
" volatility \n",
" \n",
" \n",
" \n",
" \n",
" 6621 \n",
" 2018-10-09 \n",
" 56.830002 \n",
" 59.700001 \n",
" 56.810001 \n",
" 57.709999 \n",
" 51.257065 \n",
" 24855700 \n",
" 1 \n",
" 2.89 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"6621 2018-10-09 56.830002 59.700001 56.810001 57.709999 51.257065 \n",
"\n",
" Volume above_average_volume volatility \n",
"6621 24855700 1 2.89 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Close \n",
" Open \n",
" Adj Close \n",
" High \n",
" Low \n",
" Volume \n",
" above_average_volume \n",
" volatility \n",
" \n",
" \n",
" \n",
" \n",
" 6621 \n",
" 0.831494 \n",
" 0.805759 \n",
" 0.783016 \n",
" 0.874818 \n",
" 0.821113 \n",
" 0.857847 \n",
" 1.362677 \n",
" 2.89 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Close Open Adj Close High Low Volume \\\n",
"6621 0.831494 0.805759 0.783016 0.874818 0.821113 0.857847 \n",
"\n",
" above_average_volume volatility \n",
"6621 1.362677 2.89 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'predicted: 1 (proba: [9.31850788e-04 9.99068149e-01])'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'real: 1'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = class_models[best_model][\"pipeline\"]\n",
"\n",
"example_id = 6621\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": 233,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\a3012\\AIM-PIbd-31-Zhirnova-A-E\\aimenv\\Lib\\site-packages\\numpy\\ma\\core.py:2881: RuntimeWarning: invalid value encountered in cast\n",
" _data = np.array(data, dtype=dtype, copy=copy,\n"
]
},
{
"data": {
"text/plain": [
"{'model__criterion': 'gini',\n",
" 'model__max_depth': 5,\n",
" 'model__max_features': 'sqrt',\n",
" 'model__n_estimators': 10}"
]
},
"execution_count": 233,
"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": 258,
"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",
"\n",
"# Определение трансформера (пример)\n",
"pipeline_end = ColumnTransformer([\n",
" ('numeric', StandardScaler(), numeric_features), # numeric_features - это список числовых признаков\n",
" # Добавьте другие трансформеры, если требуется\n",
"])\n",
"\n",
"# Объявление модели\n",
"optimized_model = RandomForestClassifier(\n",
" random_state=random_state,\n",
" criterion=\"gini\",\n",
" max_depth=5,\n",
" max_features=\"sqrt\",\n",
" n_estimators=10,\n",
")\n",
"\n",
"# Создание пайплайна с корректными шагами\n",
"result = {}\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": 259,
"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": 260,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \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",
" Name \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Old \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" New \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 260,
"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": "markdown",
"metadata": {},
"source": [
"Обе модели, как \"Old\", так и \"New\", демонстрируют идеальную производительность по всем ключевым метрикам: Precision, Recall, Accuracy и F1 как на обучающей (train), так и на тестовой (test) выборках. Все значения равны 1.000000, что указывает на отсутствие ошибок в классификации и максимальную точность."
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
" Accuracy_test \n",
" F1_test \n",
" ROC_AUC_test \n",
" Cohen_kappa_test \n",
" MCC_test \n",
" \n",
" \n",
" Name \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Old \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" New \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 261,
"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": "markdown",
"metadata": {},
"source": [
"Обе модели, как \"Old\", так и \"New\", показали идеальные результаты по всем выбранным метрикам: Accuracy, F1, ROC AUC, Cohen's kappa и MCC. Все метрики имеют значение 1.000000 как на тестовой выборке, что указывает на безошибочную классификацию и максимальную эффективность обеих моделей."
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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nWvp4ACgzrO4LSQ6OtptOVuYNW3aVGlpaW7rUlNTdeDAAUlSYmKiJKmgoMBtn4KCAte2xMREHT582G17VVWVCgsLXfvYAbkGALWIXDPF4yJt0aJFeu655zRgwAAFBwe71rdv3147duywdHAAAN/o2rWrdu7c6bZu165dSklJkXTyZuvExEStWrXKtb2kpEQbN25URkaGJCkjI0NFRUXasmWLa5/33ntPTqdTXbp0qYWzMIdcA4DA52+55nG74zfffKPWrVuftt7pdKqystKSQQEA/seL98GcdhwPjB49WldccYWmTJmifv366cMPP9Rzzz2n5557TtLJpx6OGjVKjz76qC666CLXo4qTkpJcT05MTU1Vz549NXz4cM2ePVuVlZXKyclR//79ffpkx58j1wCgFpFrpnhcpKWlpen99993VZ2nvPTSS0pPT7dsYAAASYbj5GLFcTzw61//Wq+++qruu+8+TZ48WS1atNC0adM0YMAA1z7jx4/X8ePHNWLECBUVFalbt25asWKF610ykrR48WLl5OTouuuuU1BQkG699VZNnz7d+/OxELkGALWIXDPF4yJt0qRJys7O1jfffCOn06lXXnlFO3fu1KJFi7R8+XLLBwgA8I0bb7xRN95441m3OxwOTZ48WZMnTz7rPnFxcT5/cfUvIdcAoG7wp1zz+J60W265Ra+//rreffddRUZGatKkSdq+fbtef/11XX/99TUxRgCoswzDugVnRq4BQO0h18zxeCZNkq688kqtXLnS6rEAAH7OR737dQ25BgC1hFwz5byKNEnavHmztm/fLulkP3+nTp0sGxQAALWNXAMA2IXHRdrXX3+t2267TevXr1dsbKwkqaioSFdccYWWLl2qCy+80OoxAkDd5aMbrOsScg0AahG5ZorH96T94Q9/UGVlpbZv367CwkIVFhZq+/btcjqd+sMf/lATYwSAOsthWLfgzMg1AKg95Jo5Hs+krVmzRhs2bFCbNm1c69q0aaMZM2boyiuvtHRwAADUNHINAGA3HhdpycnJZ3y5Z3V1ta1eTgoAAYEbrGscuQYAtYhcM8Xjdscnn3xSd911lzZv3uxat3nzZt1zzz3661//aungAKDOO9W7b8WCMyLXAKAWkWummJpJa9iwoRyOH38Qx48fV5cuXRQScvLbq6qqFBISoqFDh6pPnz41MlAAAKxCrgEA7MxUkTZt2rQaHgYA4IxoC6kR5BoA+Ai5ZoqpIi07O7umxwEAQK0h1wAAdnbeL7OWpLKyMlVUVLiti46O9mpAAICf4IpjrSLXAKCGkWumePzgkOPHjysnJ0fx8fGKjIxUw4YN3RYAgIUMCxecEbkGALWIXDPF4yJt/Pjxeu+99zRr1iyFhYVp7ty5evjhh5WUlKRFixbVxBgBAKgx5BoAwG48bnd8/fXXtWjRIl199dUaMmSIrrzySrVu3VopKSlavHixBgwYUBPjBIC6yarHDAf4o4q9Qa4BQC0i10zxeCatsLBQLVu2lHSyT7+wsFCS1K1bN61du9ba0QFAHecwrFtwZuQaANQecs0cj4u0li1bav/+/ZKktm3b6sUXX5R08kpkbGyspYMDAKCmkWsAALvxuEgbMmSIPvnkE0nShAkTNHPmTIWHh2v06NEaN26c5QMEgDqNG6xrHLkGALWIXDPF43vSRo8e7fp3ZmamduzYoS1btqh169a69NJLLR0cAAA1jVwDANiNV+9Jk6SUlBSlpKRYMRYAAHyOXAMA+JqpIm369OmmD3j33Xef92AAAO4csubm6MB+BpbnyDUA8A1yzRxTRdrf/vY3UwdzOBwBHWa/ubidQhz1fD0M2MyuWZf5egiwGecPZdLo//h6GDgHcu0kcg1nQq7h58i12meqSDv11CsAQC3jfTI1glwDAB8h10zx+p40AEANsuoJVgH+FCwAgJ8g10zx+BH8AAAAAICaw0waANgZVxwBAIGEXDOFIg0AbMxhWPQUrAAPMwCAfyDXzKHdEQAAAABs5LyKtPfff18DBw5URkaGvvnmG0nSP//5T61bt87SwQFAnWdYuOCsyDUAqCXkmikeF2kvv/yysrKyFBERoY8//ljl5eWSpOLiYk2ZMsXyAQJAnUaY1ThyDQBqEblmisdF2qOPPqrZs2drzpw5qlfvxxdgdu3aVR999JGlgwMAoKaRawAAu/H4wSE7d+7UVVddddr6mJgYFRUVWTEmAMD/cIN1zSPXAKD2kGvmeDyTlpiYqD179py2ft26dWrZsqUlgwIA/I/hsG7BGZFrAFCLyDVTPC7Shg8frnvuuUcbN26Uw+HQoUOHtHjxYo0dO1Z33HFHTYwRAIAaQ64BAOzG43bHCRMmyOl06rrrrtOJEyd01VVXKSwsTGPHjtVdd91VE2MEgLqLl37WOHINAGoRuWaKx0Waw+HQ/fffr3HjxmnPnj0qLS1VWlqaGjRoUBPjAwCgRpFrAAC78bhIOyU0NFRpaWlWjgUA8DPcYF17yDUAqHnkmjkeF2nXXHONHI6z36j33nvveTUgAMBP0BZS48g1AKhF5JopHhdpHTp0cPu6srJSW7du1eeff67s7GyrxgUAQK0g1wAAduNxkfa3v/3tjOsfeughlZaWej0gAMBPWNQWEuhXHL1BrgFALSLXTPH4EfxnM3DgQM2bN8+qwwEApB/bQqxY4BFyDQBqALlmimVFWl5ensLDw606HAAAPkWuAQB8xeN2x759+7p9bRiGvv32W23evFkTJ060bGAAAHGDdS0g1wCgFpFrpnhcpMXExLh9HRQUpDZt2mjy5Mnq0aOHZQMDAPCo4tpArgFA7SHXzPGoSKuurtaQIUPUrl07NWzYsKbGBABArSDXAAB25NE9acHBwerRo4eKiopqaDgAANQecg0AYEcePzjkkksu0b59+2piLAAA1DpyDQBgNx4XaY8++qjGjh2r5cuX69tvv1VJSYnbAgCwEI8qrnHkGgDUInLNFNP3pE2ePFl//vOfdcMNN0iSbr75ZjkcDtd2wzDkcDhUXV1t/SgBoI7iBuuaQ64BQO0j18wxXaQ9/PDD+tOf/qT//ve/NTkeAABqBbkGALAr00WaYZwsV7t3715jgwEAnEGAXy30FXINAHyEXPtFHj2C/6dtIACAWsBLP2sUuQYAtYxcM8WjIu3iiy/+xUArLCz0akAAANQWcg0AYEceFWkPP/ywYmJiamosAICf4QbrmkWuAUDtItfM8ahI69+/v+Lj42tqLACAn6MtpEaRawBQy8g1U0y/J42+fQBAICHXAAB25fHTHQEAtYe2kJpDrgFA7SPXzDFdpDmdzpocBwDgTGgLqTHkGgD4ALlmiul2RwAAAABAzfPowSEAgFrGFUcAQCAh10xhJg0AAAAAbISZNACwMW6wBgAEEnLNHIo0ALAz2kIAAIGEXDOFdkcAAAAAsBFm0gDAzrjiCAAIJOSaKcykAYCNnerdt2LxxuOPPy6Hw6FRo0a51pWVlWnkyJFq1KiRGjRooFtvvVUFBQVu33fgwAH17t1b9evXV3x8vMaNG6eqqirvBgMA8FvkmjkUaQCAc9q0aZOeffZZXXrppW7rR48erddff13//ve/tWbNGh06dEh9+/Z1ba+urlbv3r1VUVGhDRs2aOHChVqwYIEmTZpU26cAAICLP+QaRRoA2Jlh4XIeSktLNWDAAM2ZM0cNGzZ0rS8uLtbzzz+vp59+Wtdee606deqk+fPna8OGDfrggw8kSe+8846++OIL/etf/1KHDh3Uq1cvPfLII5o5c6YqKirOb0AAAP9GrplCkQYANmZ1W0hJSYnbUl5efs7PHzlypHr37q3MzEy39Vu2bFFlZaXb+rZt26pZs2bKy8uTJOXl5aldu3ZKSEhw7ZOVlaWSkhJt27bNop8QAMCfkGvmUKQBQB2SnJysmJgY15Kbm3vWfZcuXaqPPvrojPvk5+crNDRUsbGxbusTEhKUn5/v2uenQXZq+6ltAAB4K1Bzjac7AoCdWfwUrIMHDyo6Otq1Oiws7Iy7Hzx4UPfcc49Wrlyp8PBwCwYAAIDINZOYSQOAOiQ6OtptOVuYbdmyRYcPH1bHjh0VEhKikJAQrVmzRtOnT1dISIgSEhJUUVGhoqIit+8rKChQYmKiJCkxMfG0p2Kd+vrUPgAAeCNQc40iDQDszEc3WF933XX67LPPtHXrVtfSuXNnDRgwwPXvevXqadWqVa7v2blzpw4cOKCMjAxJUkZGhj777DMdPnzYtc/KlSsVHR2ttLS08/hhAAD8HrlmCu2OAGBjjv8tVhzHE1FRUbrkkkvc1kVGRqpRo0au9cOGDdOYMWMUFxen6Oho3XXXXcrIyNDll18uSerRo4fS0tI0aNAgTZ06Vfn5+XrggQc0cuTIs17pBAAENnLNHIo0AMB5+dvf/qagoCDdeuutKi8vV1ZWlv7xj3+4tgcHB2v58uW64447lJGRocjISGVnZ2vy5Mk+HDUAAGdmp1yjSAMAO7P4BmtvrF692u3r8PBwzZw5UzNnzjzr96SkpOjNN9/0/sMBAIGBXDOFIg0AbOyn74Lx9jgAAPgauWYODw4BAAAAABthJg0A7MxGbSEAAHiNXDOFIg0A7C7AgwgAUMeQa7+IdkcAAAAAsBFm0gDAxrjBGgAQSMg1cyjSAMDO6N0HAAQScs0UijR45KbB3+m3dxxWXJMq7fsiQv944ALt3Frf18NCDWm0/Gs1euOQ27qKhHB9+dClkqQLn96u+ruPuW0vurKJDv++hevrsC9L1WTZ1wo7cFySVNY8Ukf6NlPFhfzeAPA9cq1uIdfgLyjSYFr3m7/XiAcPacaEC7Xjo/r6zfAjemzJPg27so2Kj9bz9fBQQ8qbRujre9q4vjaCHW7bi7o10dEbL/hxe2iw69+Osmpd+MxOlV7aUAX9U+RwGmq0/BtdOGOn9k1pLwVzW+wvoS0EqDnkWt1ErvkWuWaOT3+TBg8eLIfDoT/96U+nbRs5cqQcDocGDx5c+wPDGfUd8Z1WLInTOy/E6cDucE2/90KV/+BQ1m2Fvh4aapAR7FB1TKhrcTZw/w8Xo16Q+/aIH8MstOAHBR+v1tEbL1BlYoQqkurraO8LFFJSqXpHK2r7VIAaR675F3KtbiLX4A98Xu4nJydr6dKl+uGHH1zrysrKtGTJEjVr1uy8j2sYhqqqqqwYIiSF1HPqoktP6KP3o1zrDMOhj9+PUlqnEz4cGWpa6OEytZzwsZo/8IkS5+1VSGG52/aoTUfVauxHSpn8mRovOyhHRbVrW0VChKojQxSz4YhU5ZSjwqmY9UdUnhiuykZhtX0q/smwcEGtINf8A7lWd5FrPkaumeLzIq1jx45KTk7WK6+84lr3yiuvqFmzZkpPT3etKy8v19133634+HiFh4erW7du2rRpk2v76tWr5XA49NZbb6lTp04KCwvTunXr5HQ6lZubqxYtWigiIkLt27fXSy+9VKvnGAii46oVHCIVHXHvkP3+uxA1bMJ/NASqH5o3UP7tLfV1Thsd/n2K6h0tV/JT2+UoOxlYx37dSPlDWurg6LYq7NlUURu/U+L8fa7vN8KDdXB0W0V9eFQX3b1ZrUdtVuQXxfomp430s/YSnNmpthArFtQOcs0/kGt1E7nme+SaOT4v0iRp6NChmj9/vuvrefPmaciQIW77jB8/Xi+//LIWLlyojz76SK1bt1ZWVpYKC91bEiZMmKDHH39c27dv16WXXqrc3FwtWrRIs2fP1rZt2zR69GgNHDhQa9asOet4ysvLVVJS4rYAddGJS2JV2ilOFRfW14m0WH0z8mIFnahW1JaT/39XfGW8TqTFquKC+jp2WWPlZ7dS1NbvVe9ImSTJUeFUwr/264eWDXRgfJoOjk1TeVKELpi5S44Kpy9PDahR5BpgT+Qa/IUtirSBAwdq3bp1+uqrr/TVV19p/fr1GjhwoGv78ePHNWvWLD355JPq1auX0tLSNGfOHEVEROj55593O9bkyZN1/fXXq1WrVoqMjNSUKVM0b948ZWVlqWXLlho8eLAGDhyoZ5999qzjyc3NVUxMjGtJTk6usXP3FyWFwaqukmJ/dnWxYeMqfX+E58/UFc76IapMCFfo/8Lq58paREqSK8yiNh1VvaPlKri9pcqbN1BZywb6dmgr1TtargaffF9r4/ZrtIX4JXLN/sg1SOSaT5Brptjir1CTJk3Uu3dvLViwQIZhqHfv3mrcuLFr+969e1VZWamuXbu61tWrV0+XXXaZtm/f7naszp07u/69Z88enThxQtdff73bPhUVFW4tJz933333acyYMa6vS0pK6nygVVUGafen9ZXe7ZjyVsRIkhwOQx26leq1BY18PDrUFkdZteodKVPVZWf+3zzs65P3cVRFh0qSgiqqJYdD+mkHyKmvjQD/62oVq4KIH3etItfsj1yDRK75BLlmii2KNOlka0hOTo4kaebMmed9nMjISNe/S0tLJUlvvPGGLrjgArf9wsLOfnNnWFjYObfXVa8811hjpx3Urk/qa+fHJx9VHF7fqXeWxvl6aKghjV8+oOPtYlXZKEwhRRVqtPwbGUEOHft1I9U7UqaoTUd1/Fexqm4QorCvT6jJSwd04qIo17tijqfGqPErBxW/9CsVXZ0gGYbi3v5WRpBDJ9pE+/jsgJpFrtkfuVb3kGvwF7Yp0nr27KmKigo5HA5lZWW5bWvVqpVCQ0O1fv16paSkSJIqKyu1adMmjRo16qzHTEtLU1hYmA4cOKDu3bvX5PDrhDWvNVRMo2rdPi5fDZtUad+2CN0/oIWKvuNdMoEq5PsKNZ23V0HHq1TdIEQ/tIrSwfFpqo6qJ0elU/V3lKjhe/lylDtV1TBUpekNVdjrx/9wrEyM0KE7L1ajN75R8pNfSA6pPDlS3+S0UXVMqA/PzH/wPhn/Ra7ZH7lW95BrvkeumWObIi04ONjV4hEcHOy2LTIyUnfccYfGjRunuLg4NWvWTFOnTtWJEyc0bNiwsx4zKipKY8eO1ejRo+V0OtWtWzcVFxdr/fr1io6OVnZ2do2eUyB6bX5jvTa/8S/viICQ/4fWZ91WFRemr8ek/uIxTqTG6ERqjJXDqltoC/Fb5Jp/INfqFnLNBsg1U2xTpElSdPTZp4kff/xxOZ1ODRo0SMeOHVPnzp319ttvq2HDhuc85iOPPKImTZooNzdX+/btU2xsrDp27Ki//OUvVg8fAAA35BoA4Hw4DIO7HH9JSUmJYmJidLVuUYiDFgi42zXrMl8PATbj/KFMX4+epOLi4nP+R/q5nPq702HQYwoODfd6TNUVZdr6z/u9GhMCB7mGcyHX8HPkWu2zxSP4AQAAAAAn2ardEQDwM/TuAwACCblmCkUaANgYT8ECAAQScs0c2h0BAAAAwEaYSQMAO6MtBAAQSMg1UyjSAMDGaAsBAAQScs0c2h0BAAAAwEaYSQMAO6MtBAAQSMg1UyjSAMDGaAsBAAQScs0c2h0BAAAAwEaYSQMAO6MtBAAQSMg1UyjSAMDmAr2lAwBQt5Brv4x2RwAAAACwEWbSAMDODOPkYsVxAADwNXLNFGbSAAAAAMBGmEkDABvjUcUAgEBCrplDkQYAdsZTsAAAgYRcM4V2RwAAAACwEWbSAMDGHM6TixXHAQDA18g1cyjSAMDOaAsBAAQScs0U2h0BAAAAwEaYSQMAG+MpWACAQEKumUORBgB2xks/AQCBhFwzhXZHAAAAALARZtIAwMZoCwEABBJyzRxm0gAAAADARphJAwA741HFAIBAQq6ZQpEGADZGWwgAIJCQa+bQ7ggAAAAANsJMGgDYGY8qBgAEEnLNFIo0ALAx2kIAAIGEXDOHdkcAAAAAsBFm0gDAzngKFgAgkJBrplCkAYCN0RYCAAgk5Jo5tDsCAAAAgI0wkwYAduY0Ti5WHAcAAF8j10yhSAMAO6N3HwAQSMg1U2h3BAAAAAAbYSYNAGzMIYtusPb+EAAAeI1cM4eZNAAAAACwEWbSAMDODOPkYsVxAADwNXLNFIo0ALAx3icDAAgk5Jo5tDsCAAAAgI0wkwYAdsajigEAgYRcM4UiDQBszGEYcljQd2/FMQAA8Ba5Zg7tjgCA0+Tm5urXv/61oqKiFB8frz59+mjnzp1u+5SVlWnkyJFq1KiRGjRooFtvvVUFBQVu+xw4cEC9e/dW/fr1FR8fr3Hjxqmqqqo2TwUAAL/LNYo0ALAzp4WLB9asWaORI0fqgw8+0MqVK1VZWakePXro+PHjrn1Gjx6t119/Xf/+97+1Zs0aHTp0SH379nVtr66uVu/evVVRUaENGzZo4cKFWrBggSZNmnR+PwsAgP8j10yh3REAbMxXbSErVqxw+3rBggWKj4/Xli1bdNVVV6m4uFjPP/+8lixZomuvvVaSNH/+fKWmpuqDDz7Q5ZdfrnfeeUdffPGF3n33XSUkJKhDhw565JFHdO+99+qhhx5SaGio1+cFAPAv5Jo5zKQBQB1SUlLitpSXl5v6vuLiYklSXFycJGnLli2qrKxUZmama5+2bduqWbNmysvLkyTl5eWpXbt2SkhIcO2TlZWlkpISbdu2zapTAgDUYYGaaxRpAGBnhoWLpOTkZMXExLiW3NzcXxyC0+nUqFGj1LVrV11yySWSpPz8fIWGhio2NtZt34SEBOXn57v2+WmQndp+ahsAoA4i10yh3REA6pCDBw8qOjra9XVYWNgvfs/IkSP1+eefa926dTU5NAAAPBaouUaRBgB2ZhgnFyuOIyk6OtotzH5JTk6Oli9frrVr1+rCCy90rU9MTFRFRYWKiorcrjoWFBQoMTHRtc+HH37odrxTT8k6tQ8AoI4h10yh3REAbMxhWLd4wjAM5eTk6NVXX9V7772nFi1auG3v1KmT6tWrp1WrVrnW7dy5UwcOHFBGRoYkKSMjQ5999pkOHz7s2mflypWKjo5WWlra+f9QAAB+i1wzh5k0AMBpRo4cqSVLlug///mPoqKiXL32MTExioiIUExMjIYNG6YxY8YoLi5O0dHRuuuuu5SRkaHLL79cktSjRw+lpaVp0KBBmjp1qvLz8/XAAw9o5MiRptpRAACwir/lGkUaANiZxW0hZs2aNUuSdPXVV7utnz9/vgYPHixJ+tvf/qagoCDdeuutKi8vV1ZWlv7xj3+49g0ODtby5ct1xx13KCMjQ5GRkcrOztbkyZO9OhUAgB8j10yhSAMAG3M4Ty5WHMcThonwCw8P18yZMzVz5syz7pOSkqI333zTsw8HAAQscs0c7kkDAAAAABthJg0A7MxHbSEAANQIcs0UijQAsLOfvLDT6+MAAOBr5JopFGkmnOphrVJlwP9CwHPOH8p8PQTYjLPs5O+Emf53wBfINZwLuYafI9dqH0WaCceOHZMkrRM3v+MMRv/H1yOATR07dkwxMTFeHcNhGHJYEIpWHAOBg1zDOZFrOAtyrfZQpJmQlJSkgwcPKioqSg6Hw9fD8amSkhIlJyfr4MGDHr3dHYGP340fGYahY8eOKSkpyYqD0bsPy5FrP+JvF86G340fkWu1jyLNhKCgIF144YW+HoatREdH1/k/WDgzfjdO8vZKI1CTyLXT8bcLZ8PvxknkWu2iSAMAOzMkWfA+Ge47AgDYArlmCu9JAwAAAAAbYSYNHgkLC9ODDz6osLAwXw8FNsPvRs3gBmugZvG3C2fD70bNINfMcRg8SxMAbKekpEQxMTG6tsMEhQR7/x8IVdXlem/r4youLubeCgBArSPXPEO7IwAAAADYCO2OAGBnPKoYABBIyDVTKNIAwM6ckqx4jZUVT9ICAMBb5JoptDsCAAAAgI0wkwYANsZTsAAAgYRcM4eZtDps8ODB6tOnj6+HARsZPHiwHA6H/vSnP522beTIkXI4HBo8eHDtD6wuO9W7b8UCBDhyDT9HrtkQuWYKRRoAN8nJyVq6dKl++OEH17qysjItWbJEzZo1O+/jGoahqqoqK4YIAIBp5Br8EUUazujzzz9Xr1691KBBAyUkJGjQoEH67rvvXNtfeukltWvXThEREWrUqJEyMzN1/PhxSdLq1at12WWXKTIyUrGxseratau++uorX50KPNSxY0clJyfrlVdeca175ZVX1KxZM6Wnp7vWlZeX6+6771Z8fLzCw8PVrVs3bdq0ybV99erVcjgceuutt9SpUyeFhYVp3bp1cjqdys3NVYsWLRQREaH27dvrpZdeqtVz9CtccQQsQa7VXeSazZBrplCk4TRFRUW69tprlZ6ers2bN2vFihUqKChQv379JEnffvutbrvtNg0dOlTbt2/X6tWr1bdvX9cVpT59+qh79+769NNPlZeXpxEjRsjhsOIxPqgtQ4cO1fz5811fz5s3T0OGDHHbZ/z48Xr55Ze1cOFCffTRR2rdurWysrJUWFjott+ECRP0+OOPa/v27br00kuVm5urRYsWafbs2dq2bZtGjx6tgQMHas2aNbVybgDqHnIN5Br8DQ8OwWmeeeYZpaena8qUKa518+bNU3Jysnbt2qXS0lJVVVWpb9++SklJkSS1a9dOklRYWKji4mLdeOONatWqlSQpNTW19k8CXhk4cKDuu+8+15Xi9evXa+nSpVq9erUk6fjx45o1a5YWLFigXr16SZLmzJmjlStX6vnnn9e4ceNcx5o8ebKuv/56SSevUk6ZMkXvvvuuMjIyJEktW7bUunXr9Oyzz6p79+61eJZ+gvfJAF4j10Cu2Qi5ZgpFGk7zySef6L///a8aNGhw2ra9e/eqR48euu6669SuXTtlZWWpR48e+u1vf6uGDRsqLi5OgwcPVlZWlq6//nplZmaqX79+atq0qQ/OBOerSZMm6t27txYsWCDDMNS7d281btzYtX3v3r2qrKxU165dXevq1aunyy67TNu3b3c7VufOnV3/3rNnj06cOOEKt1MqKircWk7wE7xPBvAauQZyzUbINVMo0nCa0tJS3XTTTXriiSdO29a0aVMFBwdr5cqV2rBhg9555x3NmDFD999/vzZu3KgWLVpo/vz5uvvuu7VixQq98MILeuCBB7Ry5UpdfvnlPjgbnK+hQ4cqJydHkjRz5szzPk5kZKTr36WlpZKkN954QxdccIHbfmFhYef9GQBwLuQaJHIN/oV70nCajh07atu2bWrevLlat27ttpz6w+RwONS1a1c9/PDD+vjjjxUaGqpXX33VdYz09HTdd9992rBhgy655BItWbLEV6eD89SzZ09VVFSosrJSWVlZbttatWql0NBQrV+/3rWusrJSmzZtUlpa2lmPmZaWprCwMB04cOC0363k5OQaOxd/dup9MlYsQF1FrkEi1+yCXDOHmbQ6rri4WFu3bnVbN2LECM2ZM0e33Xabxo8fr7i4OO3Zs0dLly7V3LlztXnzZq1atUo9evRQfHy8Nm7cqCNHjig1NVX79+/Xc889p5tvvllJSUnauXOndu/erdtvv903J4jzFhwc7GrxCA4OdtsWGRmpO+64Q+PGjVNcXJyaNWumqVOn6sSJExo2bNhZjxkVFaWxY8dq9OjRcjqd6tatm4qLi7V+/XpFR0crOzu7Rs/JL9G7D3iEXMPZkGs2Qa6ZQpFWx61evfq0nulhw4Zp/fr1uvfee9WjRw+Vl5crJSVFPXv2VFBQkKKjo7V27VpNmzZNJSUlSklJ0VNPPaVevXqpoKBAO3bs0MKFC3X06FE1bdpUI0eO1B//+EcfnSG8ER0dfdZtjz/+uJxOpwYNGqRjx46pc+fOevvtt9WwYcNzHvORRx5RkyZNlJubq3379ik2NlYdO3bUX/7yF6uHD6AOItdwLuQa/IXDMAK8DAUAP1RSUqKYmBhlthqlkGDv72uoqi7Xu3unqbi4+Jz/kQIAQE0g1zzDTBoA2BltIQCAQEKumcKDQwAAAADARphJAwBbs+iKowL7iiMAwF+Qa2ZQpAGAndEWAgAIJOSaKbQ7AgAAAICNMJMGAHbmNGRJS4czsK84AgD8BLlmCjNpAAAAAGAjFGkIeIMHD1afPn1cX1999dUaNWpUrY9j9erVcjgcKioqOus+DodDy5YtM33Mhx56SB06dPBqXF9++aUcDoe2bt3q1XFQQwyndQuAgECunRu5ZnPkmikUafCJwYMHy+FwyOFwKDQ0VK1bt9bkyZNVVVVV45/9yiuv6JFHHjG1r5kAAmrUqRusrVgA1BhyDTCJXDOFe9LgMz179tT8+fNVXl6uN998UyNHjlS9evV03333nbZvRUWFQkNDLfncuLg4S44DAMBPkWsArMJMGnwmLCxMiYmJSklJ0R133KHMzEy99tprkn5s5XjssceUlJSkNm3aSJIOHjyofv36KTY2VnFxcbrlllv05Zdfuo5ZXV2tMWPGKDY2Vo0aNdL48eNl/OxKy8/bQsrLy3XvvfcqOTlZYWFhat26tZ5//nl9+eWXuuaaayRJDRs2lMPh0ODBgyVJTqdTubm5atGihSIiItS+fXu99NJLbp/z5ptv6uKLL1ZERISuueYat3Gade+99+riiy9W/fr11bJlS02cOFGVlZWn7ffss88qOTlZ9evXV79+/VRcXOy2fe7cuUpNTVV4eLjatm2rf/zjHx6PBT7iNKxbANQocu2XkWsg18xhJg22ERERoaNHj7q+XrVqlaKjo7Vy5UpJUmVlpbKyspSRkaH3339fISEhevTRR9WzZ099+umnCg0N1VNPPaUFCxZo3rx5Sk1N1VNPPaVXX31V11577Vk/9/bbb1deXp6mT5+u9u3ba//+/fruu++UnJysl19+Wbfeeqt27typ6OhoRURESJJyc3P1r3/9S7Nnz9ZFF12ktWvXauDAgWrSpIm6d++ugwcPqm/fvho5cqRGjBihzZs3689//rPHP5OoqCgtWLBASUlJ+uyzzzR8+HBFRUVp/Pjxrn327NmjF198Ua+//rpKSko0bNgw3XnnnVq8eLEkafHixZo0aZKeeeYZpaen6+OPP9bw4cMVGRmp7Oxsj8eEWsb7ZAC/Ra6djlwDuWYORRp8zjAMrVq1Sm+//bbuuusu1/rIyEjNnTvX1Q7yr3/9S06nU3PnzpXD4ZAkzZ8/X7GxsVq9erV69OihadOm6b777lPfvn0lSbNnz9bbb7991s/etWuXXnzxRa1cuVKZmZmSpJYtW7q2n2ohiY+PV2xsrKSTVyinTJmid999VxkZGa7vWbdunZ599ll1795ds2bNUqtWrfTUU09Jktq0aaPPPvtMTzzxhEc/mwceeMD17+bNm2vs2LFaunSpW5iVlZVp0aJFuuCCCyRJM2bMUO/evfXUU08pMTFRDz74oJ566inXz6RFixb64osv9OyzzxJmAFADyLWzI9cAcyjS4DPLly9XgwYNVFlZKafTqd///vd66KGHXNvbtWvn1q//ySefaM+ePYqKinI7TllZmfbu3avi4mJ9++236tKli2tbSEiIOnfufFpryClbt25VcHCwunfvbnrce/bs0YkTJ3T99de7ra+oqFB6erokafv27W7jkOQKPk+88MILmj59uvbu3avS0lJVVVUpOjrabZ9mzZq5guzU5zidTu3cuVNRUVHau3evhg0bpuHDh7v2qaqqUkxMjMfjgQ8YsuiKo/eHAHBu5NovI9dArplDkQafueaaazRr1iyFhoYqKSlJISHuv46RkZFuX5eWlqpTp06udoefatKkyXmN4VSbhydKS0slSW+88YZbiEgn70ewSl5engYMGKCHH35YWVlZiomJ0dKlS11XMT0Z65w5c04L1+DgYMvGihpEWwjgN8i1cyPXIIlcM4kiDT4TGRmp1q1bm96/Y8eOeuGFFxQfH3/aVbdTmjZtqo0bN+qqq66SdPLK2pYtW9SxY8cz7t+uXTs5nU6tWbPG1RbyU6eueFZXV7vWpaWlKSwsTAcOHDjrlcrU1FTXzeKnfPDBB798kj+xYcMGpaSk6P7773et++qrr07b78CBAzp06JCSkpJcnxMUFKQ2bdooISFBSUlJ2rdvnwYMGODR5wMAPEOunRu5BpjH0x3hNwYMGKDGjRvrlltu0fvvv6/9+/dr9erVuvvuu/X1119Lku655x49/vjjWrZsmXbs2KE777zznO+Cad68ubKzszV06FAtW7bMdcwXX3xRkpSSkiKHw6Hly5fryJEjKi0tVVRUlMaOHavRo0dr4cKF2rt3rz766CPNmDFDCxculCT96U9/0u7duzVu3Djt3LlTS5Ys0YIFCzw634suukgHDhzQ0qVLtXfvXk2fPl2vvvrqafuFh4crOztbn3zyid5//33dfffd6tevnxITEyVJDz/8sHJzczV9+nTt2rVLn332mebPn6+nn37ao/HAR5xO6xYAtkKukWt1ErlmCkUa/Eb9+vW1du1aNWvWTH379lVqaqqGDRumsrIy1xXIP//5zxo0aJCys7OVkZGhqKgo/eY3vznncWfNmqXf/va3uvPOO9W2bVsNHz5cx48flyRdcMEFevjhhzVhwgQlJCQoJydHkvTII49o4sSJys3NVWpqqnr27Kk33nhDLVq0kHSyn/7ll1/WsmXL1L59e82ePVtTpkzx6HxvvvlmjR49Wjk5OerQoYM2bNigiRMnnrZf69at1bdvX91www3q0aOHLr30UrdHEf/hD3/Q3LlzNX/+fLVr107du3fXggULXGMFAPgGuUauAWfjMM525ykAwGdKSkoUExOjzCbDFBLk/Qtvq5wVevfI8youLj5rWxUAADWFXPMM96QBgJ1xgzUAIJCQa6bQ7ggAAAAANsJMGgDYmdOQJS+DcQb2FUcAgJ8g10yhSAMAGzMMpwzD+ydYWXEMAAC8Ra6ZQ7sjAAAAANgIM2kAYGeGYU1LR4DfYA0A8BPkmikUaQBgZ4ZFvfsBHmYAAD9BrplCuyMAAAAA2AgzaQBgZ06n5LDg5ugAv8EaAOAnyDVTKNIAwM5oCwEABBJyzRTaHQEAAADARphJAwAbM5xOGRa0hQT6+2QAAP6BXDOHmTQAAAAAsBFm0gDAzujdBwAEEnLNFIo0ALAzpyE5CDMAQIAg10yh3REAAAAAbISZNACwM8OQZMX7ZAL7iiMAwE+Qa6ZQpAGAjRlOQ4YFbSFGgIcZAMA/kGvm0O4IAAAAADZCkQYAdmY4rVvOw8yZM9W8eXOFh4erS5cu+vDDDy0+QQBAnUKumUKRBgA2ZjgNyxZPvfDCCxozZowefPBBffTRR2rfvr2ysrJ0+PDhGjhTAEBdQK6ZQ5EGADijp59+WsOHD9eQIUOUlpam2bNnq379+po3b56vhwYAgMf8Kdco0gDAznzUFlJRUaEtW7YoMzPTtS4oKEiZmZnKy8uz+iwBAHUFuWYKT3cEABurUqVkwQOsqlQpSSopKXFbHxYWprCwsNP2/+6771RdXa2EhAS39QkJCdqxY4f3AwIA1EnkmjkUaQBgQ6GhoUpMTNS6/DctO2aDBg2UnJzstu7BBx/UQw89ZNlnAABwJuSaZyjSAMCGwsPDtX//flVUVFh2TMMw5HA43Nad6WqjJDVu3FjBwcEqKChwW19QUKDExETLxgQAqBvINc9QpAGATYWHhys8PNwnnx0aGqpOnTpp1apV6tOnjyTJ6XRq1apVysnJ8cmYAAD+jVwzjyINAHBGY8aMUXZ2tjp37qzLLrtM06ZN0/HjxzVkyBBfDw0AAI/5U65RpAEAzuj//b//pyNHjmjSpEnKz89Xhw4dtGLFitNuugYAwB/4U645DMOw4PkqAAAAAAAr8J40AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwkf8PqFGlVOVqGGoAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"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=[\"Less\", \"More\"]\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": [
"В желтом квадрате мы видим значение 1049, что обозначает количество правильно классифицированных объектов, отнесенных к классу \"Less\". Это свидетельствует о том, что модель успешно идентифицирует объекты этого класса, минимизируя количество ложных положительных срабатываний.\n",
"\n",
"В зеленом квадрате значение 558 указывает на количество правильно классифицированных объектов, отнесенных к классу \"More\". Это также является показателем высокой точности модели в определении объектов данного класса."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Определение достижимого уровня качества модели для второй задачи"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Подготовка данных__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Загрузка данных и создание целевой переменной"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Среднее значение поля 'Close': 30.058856538825285\n",
" Date Open High Low Close Adj Close Volume \\\n",
"0 1992-06-26 0.328125 0.347656 0.320313 0.335938 0.260703 224358400 \n",
"1 1992-06-29 0.339844 0.367188 0.332031 0.359375 0.278891 58732800 \n",
"2 1992-06-30 0.367188 0.371094 0.343750 0.347656 0.269797 34777600 \n",
"3 1992-07-01 0.351563 0.359375 0.339844 0.355469 0.275860 18316800 \n",
"4 1992-07-02 0.359375 0.359375 0.347656 0.355469 0.275860 13996800 \n",
"\n",
" above_average_close Close_Next_Day \n",
"0 0 0.359375 \n",
"1 0 0.347656 \n",
"2 0 0.355469 \n",
"3 0 0.355469 \n",
"4 0 0.355469 \n",
"Статистическое описание DataFrame:\n",
" Open High Low Close Adj Close \\\n",
"count 8035.000000 8035.000000 8035.000000 8035.000000 8035.000000 \n",
"mean 30.048051 30.345221 29.745172 30.052733 26.667480 \n",
"std 33.613031 33.904070 33.312079 33.613521 31.724640 \n",
"min 0.328125 0.347656 0.320313 0.335938 0.260703 \n",
"25% 4.391563 4.531250 4.304844 4.399219 3.413997 \n",
"50% 13.325000 13.485000 13.150000 13.330000 10.352452 \n",
"75% 55.250000 55.715000 54.829999 55.254999 47.461098 \n",
"max 126.080002 126.320000 124.809998 126.059998 118.010414 \n",
"\n",
" Volume above_average_close Close_Next_Day \n",
"count 8.035000e+03 8035.000000 8035.000000 \n",
"mean 1.470584e+07 0.347480 30.062556 \n",
"std 1.340058e+07 0.476199 33.616368 \n",
"min 1.504000e+06 0.000000 0.347656 \n",
"25% 7.818550e+06 0.000000 4.403125 \n",
"50% 1.170240e+07 0.000000 13.330000 \n",
"75% 1.778850e+07 1.000000 55.274999 \n",
"max 5.855088e+08 1.000000 126.059998 \n"
]
}
],
"source": [
"import pandas as pd\n",
"from sklearn import set_config\n",
"\n",
"set_config(transform_output=\"pandas\")\n",
"\n",
"# Загрузка данных о ценах акций Starbucks из CSV файла\n",
"df = pd.read_csv(\".//static//csv//Starbucks Dataset.csv\")\n",
"\n",
"# Опция для настройки генерации случайных чисел (если это нужно для других частей кода)\n",
"random_state = 42\n",
"\n",
"# Вычисление среднего значения поля \"Close\"\n",
"average_close = df['Close'].mean()\n",
"print(f\"Среднее значение поля 'Close': {average_close}\")\n",
"\n",
"# Создание новой колонки, указывающей, выше или ниже среднего значение цена закрытия\n",
"df['above_average_close'] = (df['Close'] > average_close).astype(int)\n",
"\n",
"# Создание целевой переменной для прогнозирования (цена закрытия на следующий день)\n",
"df['Close_Next_Day'] = df['Close'].shift(-1)\n",
"\n",
"# Удаление последней строки, где нет значения для следующего дня\n",
"df.dropna(inplace=True)\n",
"\n",
"# Вывод DataFrame с новой колонкой\n",
"print(df.head())\n",
"\n",
"# Примерный анализ данных\n",
"print(\"Статистическое описание DataFrame:\")\n",
"print(df.describe())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n",
"\n",
"Целевой признак -- above_average_close"
]
},
{
"cell_type": "code",
"execution_count": 240,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'X_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
" 2484 \n",
" 2002-05-06 \n",
" 5.867500 \n",
" 5.897500 \n",
" 5.637500 \n",
" 5.665000 \n",
" 4.396299 \n",
" 10545200 \n",
" 0 \n",
" 5.700000 \n",
" \n",
" \n",
" 1576 \n",
" 1998-09-22 \n",
" 1.882813 \n",
" 1.925781 \n",
" 1.867188 \n",
" 1.902344 \n",
" 1.476306 \n",
" 42080000 \n",
" 0 \n",
" 2.058594 \n",
" \n",
" \n",
" 6595 \n",
" 2018-08-31 \n",
" 52.459999 \n",
" 53.709999 \n",
" 52.450001 \n",
" 53.450001 \n",
" 47.473415 \n",
" 10892800 \n",
" 1 \n",
" 53.529999 \n",
" \n",
" \n",
" 7412 \n",
" 2021-11-30 \n",
" 109.550003 \n",
" 111.089996 \n",
" 109.050003 \n",
" 109.639999 \n",
" 103.481560 \n",
" 9483300 \n",
" 1 \n",
" 108.660004 \n",
" \n",
" \n",
" 7413 \n",
" 2021-12-01 \n",
" 110.959999 \n",
" 113.349998 \n",
" 108.550003 \n",
" 108.660004 \n",
" 102.556618 \n",
" 7618500 \n",
" 1 \n",
" 111.419998 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5519 \n",
" 2014-05-27 \n",
" 36.320000 \n",
" 36.889999 \n",
" 36.270000 \n",
" 36.830002 \n",
" 30.466820 \n",
" 10100400 \n",
" 1 \n",
" 36.634998 \n",
" \n",
" \n",
" 4531 \n",
" 2010-06-22 \n",
" 14.035000 \n",
" 14.240000 \n",
" 13.575000 \n",
" 13.615000 \n",
" 10.609633 \n",
" 20533200 \n",
" 0 \n",
" 13.660000 \n",
" \n",
" \n",
" 535 \n",
" 1994-08-09 \n",
" 0.906250 \n",
" 0.921875 \n",
" 0.890625 \n",
" 0.898438 \n",
" 0.697229 \n",
" 7795200 \n",
" 0 \n",
" 0.906250 \n",
" \n",
" \n",
" 787 \n",
" 1995-08-08 \n",
" 1.183594 \n",
" 1.199219 \n",
" 1.175781 \n",
" 1.183594 \n",
" 0.918523 \n",
" 10848000 \n",
" 0 \n",
" 1.187500 \n",
" \n",
" \n",
" 7987 \n",
" 2024-03-15 \n",
" 91.599998 \n",
" 92.019997 \n",
" 90.099998 \n",
" 90.120003 \n",
" 89.441422 \n",
" 18133600 \n",
" 1 \n",
" 91.010002 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 9 columns
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"2484 2002-05-06 5.867500 5.897500 5.637500 5.665000 4.396299 \n",
"1576 1998-09-22 1.882813 1.925781 1.867188 1.902344 1.476306 \n",
"6595 2018-08-31 52.459999 53.709999 52.450001 53.450001 47.473415 \n",
"7412 2021-11-30 109.550003 111.089996 109.050003 109.639999 103.481560 \n",
"7413 2021-12-01 110.959999 113.349998 108.550003 108.660004 102.556618 \n",
"... ... ... ... ... ... ... \n",
"5519 2014-05-27 36.320000 36.889999 36.270000 36.830002 30.466820 \n",
"4531 2010-06-22 14.035000 14.240000 13.575000 13.615000 10.609633 \n",
"535 1994-08-09 0.906250 0.921875 0.890625 0.898438 0.697229 \n",
"787 1995-08-08 1.183594 1.199219 1.175781 1.183594 0.918523 \n",
"7987 2024-03-15 91.599998 92.019997 90.099998 90.120003 89.441422 \n",
"\n",
" Volume above_average_close Close_Next_Day \n",
"2484 10545200 0 5.700000 \n",
"1576 42080000 0 2.058594 \n",
"6595 10892800 1 53.529999 \n",
"7412 9483300 1 108.660004 \n",
"7413 7618500 1 111.419998 \n",
"... ... ... ... \n",
"5519 10100400 1 36.634998 \n",
"4531 20533200 0 13.660000 \n",
"535 7795200 0 0.906250 \n",
"787 10848000 0 1.187500 \n",
"7987 18133600 1 91.010002 \n",
"\n",
"[6428 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" above_average_close \n",
" \n",
" \n",
" \n",
" \n",
" 2484 \n",
" 0 \n",
" \n",
" \n",
" 1576 \n",
" 0 \n",
" \n",
" \n",
" 6595 \n",
" 1 \n",
" \n",
" \n",
" 7412 \n",
" 1 \n",
" \n",
" \n",
" 7413 \n",
" 1 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5519 \n",
" 1 \n",
" \n",
" \n",
" 4531 \n",
" 0 \n",
" \n",
" \n",
" 535 \n",
" 0 \n",
" \n",
" \n",
" 787 \n",
" 0 \n",
" \n",
" \n",
" 7987 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 1 columns
\n",
"
"
],
"text/plain": [
" above_average_close\n",
"2484 0\n",
"1576 0\n",
"6595 1\n",
"7412 1\n",
"7413 1\n",
"... ...\n",
"5519 1\n",
"4531 0\n",
"535 0\n",
"787 0\n",
"7987 1\n",
"\n",
"[6428 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'X_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
" 5022 \n",
" 2012-06-01 \n",
" 26.555000 \n",
" 27.030001 \n",
" 26.02000 \n",
" 26.075001 \n",
" 20.960617 \n",
" 17456400 \n",
" 0 \n",
" 26.950001 \n",
" \n",
" \n",
" 3110 \n",
" 2004-10-28 \n",
" 12.895000 \n",
" 13.212500 \n",
" 12.77750 \n",
" 13.212500 \n",
" 10.253506 \n",
" 12049600 \n",
" 0 \n",
" 13.220000 \n",
" \n",
" \n",
" 2931 \n",
" 2004-02-12 \n",
" 9.317500 \n",
" 9.325000 \n",
" 9.20500 \n",
" 9.245000 \n",
" 7.174544 \n",
" 8623600 \n",
" 0 \n",
" 9.175000 \n",
" \n",
" \n",
" 6863 \n",
" 2019-09-26 \n",
" 90.839996 \n",
" 91.150002 \n",
" 89.50000 \n",
" 89.800003 \n",
" 81.286491 \n",
" 5026400 \n",
" 1 \n",
" 88.370003 \n",
" \n",
" \n",
" 5147 \n",
" 2012-11-30 \n",
" 25.709999 \n",
" 26.004999 \n",
" 25.52000 \n",
" 25.934999 \n",
" 21.016182 \n",
" 11997400 \n",
" 0 \n",
" 25.895000 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 2947 \n",
" 2004-03-08 \n",
" 9.477500 \n",
" 9.585000 \n",
" 9.34250 \n",
" 9.365000 \n",
" 7.267669 \n",
" 14322400 \n",
" 0 \n",
" 9.382500 \n",
" \n",
" \n",
" 784 \n",
" 1995-08-03 \n",
" 1.230469 \n",
" 1.230469 \n",
" 1.18750 \n",
" 1.203125 \n",
" 0.933680 \n",
" 13270400 \n",
" 0 \n",
" 1.195313 \n",
" \n",
" \n",
" 4164 \n",
" 2009-01-06 \n",
" 5.025000 \n",
" 5.180000 \n",
" 4.97500 \n",
" 5.110000 \n",
" 3.965594 \n",
" 17609800 \n",
" 0 \n",
" 4.995000 \n",
" \n",
" \n",
" 455 \n",
" 1994-04-14 \n",
" 0.804688 \n",
" 0.828125 \n",
" 0.78125 \n",
" 0.804688 \n",
" 0.624475 \n",
" 5990400 \n",
" 0 \n",
" 0.785156 \n",
" \n",
" \n",
" 3335 \n",
" 2005-09-20 \n",
" 11.625000 \n",
" 11.775000 \n",
" 11.50250 \n",
" 11.540000 \n",
" 8.955570 \n",
" 13312000 \n",
" 0 \n",
" 11.667500 \n",
" \n",
" \n",
"
\n",
"
1607 rows × 9 columns
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"5022 2012-06-01 26.555000 27.030001 26.02000 26.075001 20.960617 \n",
"3110 2004-10-28 12.895000 13.212500 12.77750 13.212500 10.253506 \n",
"2931 2004-02-12 9.317500 9.325000 9.20500 9.245000 7.174544 \n",
"6863 2019-09-26 90.839996 91.150002 89.50000 89.800003 81.286491 \n",
"5147 2012-11-30 25.709999 26.004999 25.52000 25.934999 21.016182 \n",
"... ... ... ... ... ... ... \n",
"2947 2004-03-08 9.477500 9.585000 9.34250 9.365000 7.267669 \n",
"784 1995-08-03 1.230469 1.230469 1.18750 1.203125 0.933680 \n",
"4164 2009-01-06 5.025000 5.180000 4.97500 5.110000 3.965594 \n",
"455 1994-04-14 0.804688 0.828125 0.78125 0.804688 0.624475 \n",
"3335 2005-09-20 11.625000 11.775000 11.50250 11.540000 8.955570 \n",
"\n",
" Volume above_average_close Close_Next_Day \n",
"5022 17456400 0 26.950001 \n",
"3110 12049600 0 13.220000 \n",
"2931 8623600 0 9.175000 \n",
"6863 5026400 1 88.370003 \n",
"5147 11997400 0 25.895000 \n",
"... ... ... ... \n",
"2947 14322400 0 9.382500 \n",
"784 13270400 0 1.195313 \n",
"4164 17609800 0 4.995000 \n",
"455 5990400 0 0.785156 \n",
"3335 13312000 0 11.667500 \n",
"\n",
"[1607 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" above_average_close \n",
" \n",
" \n",
" \n",
" \n",
" 5022 \n",
" 0 \n",
" \n",
" \n",
" 3110 \n",
" 0 \n",
" \n",
" \n",
" 2931 \n",
" 0 \n",
" \n",
" \n",
" 6863 \n",
" 1 \n",
" \n",
" \n",
" 5147 \n",
" 0 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 2947 \n",
" 0 \n",
" \n",
" \n",
" 784 \n",
" 0 \n",
" \n",
" \n",
" 4164 \n",
" 0 \n",
" \n",
" \n",
" 455 \n",
" 0 \n",
" \n",
" \n",
" 3335 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
1607 rows × 1 columns
\n",
"
"
],
"text/plain": [
" above_average_close\n",
"5022 0\n",
"3110 0\n",
"2931 0\n",
"6863 1\n",
"5147 0\n",
"... ...\n",
"2947 0\n",
"784 0\n",
"4164 0\n",
"455 0\n",
"3335 0\n",
"\n",
"[1607 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from typing import Tuple\n",
"import pandas as pd\n",
"from pandas import DataFrame\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"\n",
"def split_stratified_into_train_val_test(\n",
" df_input: DataFrame,\n",
" stratify_colname: str = \"y\",\n",
" frac_train: float = 0.6,\n",
" frac_val: float = 0.15,\n",
" frac_test: float = 0.25,\n",
" random_state: int = None,\n",
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
" \n",
"\n",
" if not (0 < frac_train < 1) or not (0 <= frac_val <= 1) or not (0 <= frac_test <= 1):\n",
" raise ValueError(\"Fractions must be between 0 and 1 and the sum must equal 1.\")\n",
" \n",
" if not (frac_train + frac_val + frac_test == 1.0):\n",
" raise ValueError(\"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(f\"{stratify_colname} is not a column in the DataFrame.\")\n",
"\n",
" X = df_input\n",
" y = df_input[[stratify_colname]]\n",
"\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",
"\n",
" if frac_val == 0:\n",
" return df_train, pd.DataFrame(), df_temp, y_train, pd.DataFrame(), y_temp\n",
"\n",
" relative_frac_test = frac_test / (frac_val + frac_test)\n",
"\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",
"\n",
" assert len(df_input) == len(df_train) + len(df_val) + len(df_test)\n",
" \n",
" return df_train, df_val, df_test, y_train, y_val, y_test\n",
"\n",
"\n",
"X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n",
" df, stratify_colname=\"above_average_close\", frac_train=0.80, frac_val=0.0, frac_test=0.20, random_state=random_state\n",
")\n",
"\n",
"display(\"X_train\", X_train)\n",
"display(\"y_train\", y_train)\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",
"pipeline_end -- основной конвейер предобработки данных и конструирования признаков"
]
},
{
"cell_type": "code",
"execution_count": 241,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.base import BaseEstimator, TransformerMixin\n",
"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",
"class StarbucksFeatures(BaseEstimator, TransformerMixin):\n",
" def __init__(self):\n",
" pass\n",
" def fit(self, X, y=None):\n",
" return self\n",
" def transform(self, X, y=None):\n",
" X[\"Length_to_Width_Ratio\"] = X[\"x\"] / X[\"y\"]\n",
" return X\n",
" def get_feature_names_out(self, features_in):\n",
" return np.append(features_in, [\"Length_to_Width_Ratio\"], axis=0)\n",
" \n",
"\n",
"columns_to_drop = [\"Date\"]\n",
"num_columns = [\"Close\", \"Open\", \"Adj Close\", \"High\", \"Low\", \"Volume\", \"above_average_close\"]\n",
"cat_columns = []\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",
"\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",
" (\"prepocessing_cat\", preprocessing_cat, [\"Cabin_type\"]),\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": 242,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Close \n",
" Open \n",
" Adj Close \n",
" High \n",
" Low \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
" 2484 \n",
" -0.723400 \n",
" -0.717267 \n",
" -0.700283 \n",
" -0.718936 \n",
" -0.721563 \n",
" -0.304340 \n",
" -0.729840 \n",
" 5.700000 \n",
" \n",
" \n",
" 1576 \n",
" -0.835023 \n",
" -0.835490 \n",
" -0.792049 \n",
" -0.835755 \n",
" -0.834432 \n",
" 1.970579 \n",
" -0.729840 \n",
" 2.058594 \n",
" \n",
" \n",
" 6595 \n",
" 0.694202 \n",
" 0.665106 \n",
" 0.653502 \n",
" 0.687359 \n",
" 0.679824 \n",
" -0.279264 \n",
" 1.370164 \n",
" 53.529999 \n",
" \n",
" \n",
" 7412 \n",
" 2.361148 \n",
" 2.358932 \n",
" 2.413670 \n",
" 2.375059 \n",
" 2.374211 \n",
" -0.380946 \n",
" 1.370164 \n",
" 108.660004 \n",
" \n",
" \n",
" 7413 \n",
" 2.332076 \n",
" 2.400766 \n",
" 2.384602 \n",
" 2.441531 \n",
" 2.359243 \n",
" -0.515472 \n",
" 1.370164 \n",
" 111.419998 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 5519 \n",
" 0.201149 \n",
" 0.186241 \n",
" 0.119036 \n",
" 0.192637 \n",
" 0.195457 \n",
" -0.336428 \n",
" 1.370164 \n",
" 36.634998 \n",
" \n",
" \n",
" 4531 \n",
" -0.487553 \n",
" -0.474942 \n",
" -0.505016 \n",
" -0.473560 \n",
" -0.483945 \n",
" 0.416194 \n",
" -0.729840 \n",
" 13.660000 \n",
" \n",
" \n",
" 535 \n",
" -0.864806 \n",
" -0.864464 \n",
" -0.816533 \n",
" -0.865282 \n",
" -0.863666 \n",
" -0.502725 \n",
" -0.729840 \n",
" 0.906250 \n",
" \n",
" \n",
" 787 \n",
" -0.856346 \n",
" -0.856235 \n",
" -0.809579 \n",
" -0.857125 \n",
" -0.855130 \n",
" -0.282496 \n",
" -0.729840 \n",
" 1.187500 \n",
" \n",
" \n",
" 7987 \n",
" 1.782063 \n",
" 1.826366 \n",
" 1.972431 \n",
" 1.814159 \n",
" 1.806921 \n",
" 0.243087 \n",
" 1.370164 \n",
" 91.010002 \n",
" \n",
" \n",
"
\n",
"
6428 rows × 8 columns
\n",
"
"
],
"text/plain": [
" Close Open Adj Close High Low Volume \\\n",
"2484 -0.723400 -0.717267 -0.700283 -0.718936 -0.721563 -0.304340 \n",
"1576 -0.835023 -0.835490 -0.792049 -0.835755 -0.834432 1.970579 \n",
"6595 0.694202 0.665106 0.653502 0.687359 0.679824 -0.279264 \n",
"7412 2.361148 2.358932 2.413670 2.375059 2.374211 -0.380946 \n",
"7413 2.332076 2.400766 2.384602 2.441531 2.359243 -0.515472 \n",
"... ... ... ... ... ... ... \n",
"5519 0.201149 0.186241 0.119036 0.192637 0.195457 -0.336428 \n",
"4531 -0.487553 -0.474942 -0.505016 -0.473560 -0.483945 0.416194 \n",
"535 -0.864806 -0.864464 -0.816533 -0.865282 -0.863666 -0.502725 \n",
"787 -0.856346 -0.856235 -0.809579 -0.857125 -0.855130 -0.282496 \n",
"7987 1.782063 1.826366 1.972431 1.814159 1.806921 0.243087 \n",
"\n",
" above_average_close Close_Next_Day \n",
"2484 -0.729840 5.700000 \n",
"1576 -0.729840 2.058594 \n",
"6595 1.370164 53.529999 \n",
"7412 1.370164 108.660004 \n",
"7413 1.370164 111.419998 \n",
"... ... ... \n",
"5519 1.370164 36.634998 \n",
"4531 -0.729840 13.660000 \n",
"535 -0.729840 0.906250 \n",
"787 -0.729840 1.187500 \n",
"7987 1.370164 91.010002 \n",
"\n",
"[6428 rows x 8 columns]"
]
},
"execution_count": 242,
"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 -- многослойный персептрон (нейронная сеть)"
]
},
{
"cell_type": "code",
"execution_count": 243,
"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": 244,
"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": [
"#### Сводная таблица оценок качества для использованных моделей классификации\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Матрица неточностей__"
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0cAAAQ9CAYAAACSpDaqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVwU9f8H8NdwI7BcciYi4kleeGTkmZJo5vHVvv40VFDTMry/nt+8NSm7TPNIy6v0a5eZmZnkmUrknQfirXgAKgKCAsvO/P4gtjZgYXVglp3X8/GYRzKfz85+ZpN9+Z7PHIIkSRKIiIiIiIhUzkrpARAREREREZkDFkdERERERERgcURERERERASAxREREREREREAFkdEREREREQAWBwREREREREBYHFEREREREQEgMURERERERERABZHREREREREAFgc0WNau3YtBEHA1atXK2T7V69ehSAIWLt2rSzb27t3LwRBwN69e2XZHhERkaWYPXs2BEEoV19BEDB79uyKHRCRglgckUVZtmyZbAUVEREREamLjdIDICpJYGAgHj16BFtbW5Net2zZMlSvXh3R0dEG69u3b49Hjx7Bzs5OxlESERFVfdOnT8fUqVOVHgaRWWBxRGZJEAQ4ODjItj0rKytZt0dERGQJcnJy4OTkBBsb/pOQCOBpdSSjZcuW4emnn4a9vT38/f0RExODjIyMYv2WLl2K2rVrw9HREc888wx+/fVXdOzYER07dtT3Kemao5SUFAwZMgQ1atSAvb09/Pz80KtXL/11T7Vq1cKZM2ewb98+CIIAQRD02yztmqOEhAS8+OKLcHd3h5OTE5o0aYKPPvpI3g+GiIjIDBRdW3T27Fm88sorcHd3R9u2bUu85igvLw/jx4+Hl5cXXFxc0LNnT9y4caPE7e7duxctW7aEg4MDgoOD8cknn5R6HdMXX3yBFi1awNHRER4eHujfvz+Sk5MrZH+JHgcPE5AsZs+ejTlz5iA8PBwjR45EUlISli9fjsOHD+PgwYP60+OWL1+OUaNGoV27dhg/fjyuXr2K3r17w93dHTVq1DD6Hn379sWZM2cwevRo1KpVC2lpaYiLi8P169dRq1YtLFq0CKNHj4azszPefPNNAICPj0+p24uLi8NLL70EPz8/jB07Fr6+vkhMTMS2bdswduxY+T4cIiIiM/Lvf/8bdevW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4IMPPpDarly5km+9q1ev4vr16/Dy8pLex8LCAnXr1oW7uzu8vLxw8eJFhISElOr9iYhIeZjNRWM2k5x4QwYyEhISgmrVqqF79+44ePAgLl26hKioKIwaNQrXrl0DALz77rv49NNPsW3bNpw5cwbDhw8v8jkINWvWRGhoKAYNGoRt27ZJ29y8eTMAwMfHByqVCjt27MDNmzeRkZEBBwcHjBs3DmPGjMHatWtx4cIFnDhxAgsXLpQupHz77bdx7tw5jB8/HvHx8diwYQPWrFlTqv19+umncfXqVWzcuBEXLlzAggULCryA1cbGBqGhoTh16hQOHjyIUaNGoVevXvDw8AAATJs2DeHh4ViwYAHOnj2LP//8E6tXr8bcuXNLNR4iIqJHMZuZzVSO5L7oicrOwxd9lqb/xo0bYsCAAaJatWpCo9GIWrVqiSFDhoi0tDQhRO5Fnu+++67QarXCyclJjB07VgwYMKDQiz6FEOLBgwdizJgxwtPTU6jVauHn5ydWrVol9U+fPl14eHgIlUolQkNDhRC5F6rOnz9f1K1bV1hbWwtXV1cRHBws9u/fL73up59+En5+fkKj0Yg2bdqIVatWlfqiz/Hjx4uqVasKe3t78cYbb4h58+YJR0dHqX/KlCmicePGYvHixcLLy0vY2NiI119/XaSkpBhtd/369aJJkyZCrVYLZ2dn0bZtW7F161YhBC/6JCKiXMzmgjGbyVyohCjkSj0iIiIiIiIF4Wl1REREREREYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFEREREREREQAWR0RERERERABYHBEREREREQFgcURERERERASAxREREREREREAFkdEREREREQAWBwREREREREBYHFEREREREQEgMURldILL7yAF154QfYxNGjQQNYxEBERlTWVSoWpU6dKP69ZswYqlQqXL1+WbUxFiYqKgkqlwpYtW+QeSqlcvnwZKpUKa9askXsoZAZYHBERERERAOD+/fuYOnUqoqKi5B6KyW3YsAHz58+Xexhk5qzkHgBVLHv27JF7CERERIrUv39/9O7dGxqNpsze4/79+5g2bRoAyH6miKlt2LABf/31F0aPHm3U7uPjgwcPHsDa2lqegZFZYXFEpaJWq+UeAhERkdkyGAzQ6XSwsbEx+bYtLS1h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iz///BOrV6/G3LlzSzUeIiKiRzGbmc1UjuS+6InKzsMXfZam/8aNG2LAgAGiWrVqQqPRiFq1aokhQ4aItLQ0IUTuRZ7vvvuu0Gq1wsnJSYwdO1YMGDCg0Is+hRDiwYMHYsyYMcLT01Oo1Wrh5+cnVq1aJfVPnz5deHh4CJVKJUJDQ4UQuReqzp8/X9StW1dYW1sLV1dXERwcLPbv3y+97qeffhJ+fn5Co9GINm3aiFWrVpX6os/x48eLqlWrCnt7e/HGG2+IefPmCUdHR6l/ypQponHjxmLx4sXCy8tL2NjYiNdff12kpKQYbXf9+vWiSZMmQq1WC2dnZ9G2bVuxdetWIQQv+iQiolzM5oIxm8lcqIQo5Eo9IiIiIiIiBeFpdURERERERGBxREREREREBIDFEREREREREQAWR0RERERERABYHBEREREREQFgcURERERERASAxREREREREREAFkdEREREREQAWBwREREREREBYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFET0hlUqFqVOnyj2MQn399deoV68erK2t4eTkJPdwiIiIKpXLly9DpVJhzZo1cg+FyCRYHFGldebMGYSFhaF27dpYsWIFli9fLveQ8rl+/TqmTp2K2NhYuYdCREREpHhWcg+AqKxERUXBYDDgiy++gJ+fn9zDKdD169cxbdo01KxZE02aNJF7OERERESKxpmjSubevXtyD8FsJCcnA4BJT6e7f/++ybZFREREROaFxVEFNnXqVKhUKvz999/o27cvnJ2d0bp1a/zxxx8ICwtDrVq1YGNjAw8PDwwaNAi3b98u8PXnz59HWFgYnJyc4OjoiIEDB+YrArKysjBmzBi4urrCwcEB3bp1w7Vr1woc18mTJ9G5c2dotVrY29ujQ4cO+O2334zWWbNmDVQqFQ4dOoRRo0bB1dUVTk5OeOutt6DT6ZCamooBAwbA2dkZzs7OmDBhAoQQJf5satasiSlTpgAAXF1d810btXjxYjzzzDPQaDTw8vLCiBEjkJqaarSNF154AQ0aNMDx48fRtm1bVKlSBe+//770eUyZMgV+fn7QaDTw9vbGhAkTkJWVZbSNyMhItG7dGk5OTrC3t0fdunWlbURFReHZZ58FAAwcOBAqlYrnbRMRUbnL+3vg7Nmz6Nev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SJjN6mA2kzU4qVeWkZLOnDmDffv2wdPTs1rfpUuX0LdvXzz77LNo37494uLi0LdvX7z88svw9fWFn58fEhISEBcXhz59+iA2NhaDBw9GcHCwCnti25o2bYr+/ftj7dq1EEKgf//+aNKkibH/0qVLKC8vR48ePYxtzs7O6Nq1KzIzM022FR0dbfzzxYsXUVxcjD59+pisU1ZWZnJaABERNR7M5obBbCYlsTiyE0VFRXjhhRfwl7/8pVpfcHAwHB0dkZaWhsOHD+Prr7/GBx98gDfeeANHjx5FixYtkJKSgokTJ2LPnj34/PPP8eabbyItLQ3du3dXYW9s26hRozB+/HgAwPLlyx95Ox4eHsY/FxUVAQB27dqFZs2amayn0+ke+TOIiEg9zOaGw2wmpfCaIzvRuXNnnDt3Do899hgiIiJMlqp/6JIkoUePHpg3bx5OnToFFxcXbNu2zbiNqKgozJo1C4cPH0a7du2wceNGtXbHpvXr1w9lZWUoLy9HXFycSV+rVq3g4uKC9PR0Y1t5eTmOHTuGyMjIGrcZGRkJnU6H7Ozsan9/oaGhVtsXIiKyHmZzw2E2k1I4c9QIFRQU4PTp0yZtY8eOxapVqzBkyBBMnz4dfn5+uHjxIjZt2oRPPvkEx48fx969e9G3b18EBATg6NGjuHXrFtq2bYsrV67g448/xosvvoiQkBBkZWXhxx9/xIgRI9TZQRvn6OhonIZ3dHQ06fPw8MC4ceMwbdo0+Pn5ISwsDIsXL0ZxcTFGjx5d4za9vLwwdepUJCUlQZZl9OzZEwUFBUhPT4der0d8fLxV94mIiOqH2awuZjMphcVRI7R///5q57qOHj0a6enpmDFjBvr27YvS0lKEh4ejX79+cHBwgF6vx7fffoulS5eisLAQ4eHheO+99/Dcc88hLy8PFy5cwLp163D79m0EBwcjMTER//u//6vSHto+vV5fY9+iRYsgyzKGDx+Ou3fvIjo6Gl999RV8fX3NbnPBggVo2rQpkpOTcfnyZfj4+KBz5854/fXXlR4+EREpjNmsPmYzKUESQgi1B0FERERERKQ2XnNEREREREQEFkdEREREREQAWBwREREREREBYHFEREREREQEgMURERERERERABZHREREREREAFgcERERERERAWBxREREREREBIDFESkkISEBAwcONL5+6qmnMHny5AYfx/79+yFJEu7cuVPjOpIkYfv27XXe5ty5c9GpU6d6jevq1auQJAmnT5+u13aIiIjqitlsHrOZHobFkR1LSEiAJEmQJAkuLi6IiIjA/PnzUVFRYfXP3rp1KxYsWFCndety0CQiIrIHzGYi2+ak9gDIuvr164eUlBSUlpZi9+7dSExMhLOzM2bNmlVt3bKyMri4uCjyuX5+fopsh4iIyN4wm4lsF2eO7JxOp0NQUBDCw8Mxbtw4xMbGYseOHQB+m25/5513EBISgtatWwMAcnJyMHjwYPj4+MDPzw8DBgzA1atXjds0GAyYMmUKfHx84O/vj+nTp0MIYfK5v5+6Ly0txYwZMxAaGgqdToeIiAisXr0aV69exdNPPw0A8PX1hSRJSEhIAADIsozk5GS0aNECbm5u6NixIzZv3mzyObt378bjjz8ONzc3PP300ybjrKsZM2bg8ccfh7u7O1q2bIm33noL5eXl1db76KOPEBoaCnd3dwwePBgFBQUm/Z988gnatm0LV1dXtGnTBh9++KHFYyEiIvvHbK4ds5nUwuJIY9zc3FBWVmZ8vXfvXmRlZSEtLQ2pqakoLy9HXFwcvLy8cPDgQaSnp8PT0xP9+vUzvu+9997D2rVrsWbNGhw6dAj5+fnYtm2b2c8dMWIEPvvsMyxbtgyZmZn46KOP4OnpidDQUGzZsgUAkJWVhRs3buBvf/sbACA5ORnr16/HypUrce7cOSQlJWHYsGE4cOAAgMqgGDRoEF544QWcPn0ar776KmbOnGnxd+Ll5YW1a9fi/Pnz+Nvf/oZVq1ZhyZIlJutcvHgRX3zxBXbu3Ik9e/bg1KlT+POf/2zs37BhA2bPno133nkHmZmZWLhwId566y2sW7fO4vEQEZG2MJurYzaTagTZrfj4eDFgwAAhhBCyLIu0tDSh0+nE1KlTjf2BgYGitLTU+J5PP/1UtG7dWsiybGwrLS0Vbm5u4quvvhJCCBEcHCwWL15s7C8vLxfNmzc3fpYQQvTu3VtMmjRJCCFEVlaWACDS0tIeOs59+/YJAOLXX381tpWUlAh3d3dx+PBhk3VHjx4thgwZIoQQYtasWSIyMtKkf8aMGdW29XsAxLZt22rsf/fdd0WXLl2Mr+fMmSMcHR3FtWvXjG1ffvmlcHBwEDdu3BBCCNGqVSuxceNGk+0sWLBAxMTECCGEuHLligAgTp06VePnEhGR/WM2PxyzmWwFrzmyc6mpqfD09ER5eTlkWcaf/vQnzJ0719jfvn17k3OZz5w5g4sXL8LLy8tkOyUlJbh06RIKCgpw48YNdOvWzdjn5OSE6OjoatP3VU6fPg1HR0f07t27zuO+ePEiiouL0adPH5P2srIyREVFAQAyMzNNxgEAMTExdf6MKp9//jmWLVuGS5cuoaioCBUVFdDr9SbrhIWFoVmzZiafI8sysrKy4OXlhUuXLmH06NEYM2aMcZ2Kigp4e3tbPB4iIrJvzObaMZtJLSyO7NzTTz+NFStWwMXFBSEhIXByMv0r9/DwMHldVFSELl26YMOGDdW21bRp00cag5ubm8XvKSoqAgDs2rXL5MAHVJ6rrZSMjAwMHToU8+bNQ1xcHLy9vbFp0ya89957Fo911apV1QLB0dFRsbESEZF9YDabx2wmNbE4snMeHh6IiIio8/qdO3fG559/joCAgGq/0FQJDg7G0aNH0atXLwCVv8KcOHECnTt3fuj67du3hyzLOHDgAGJjY6v1V/06ZjAYjG2RkZHQ6XTIzs6u8Vettm3bGi9grXLkyJHad/IBhw8fRnh4ON544w1j208//VRtvezsbPz8888ICQkxfo6DgwNat26NwMBAhISE4PLlyxg6dKhFn09ERNrDbDaP2Uxq4g0ZyMTQoUPRpEkTDBgwAAcPHsSVK1ewf/9+TJw4EdeuXQMATJo0CYsWLcL27dtx4cIF/PnPfzb7HITHHnsM8fHxGDVqFLZv327c5hdffAEACA8PhyRJSE1Nxa1bt1BUVAQvLy9MnToVSUlJWLduHS5duoSTJ0/igw8+MF5I+dprr+HHH3/EtGnTkJWVhY0bN2Lt2rUW7e8f/vAHZGdnY9OmTbh06RKWLVv20AtYXV1dER8fjzNnzuDgwYOYOHEiBg8ejKCgIADAvHnzkJycjGXLluGHH37A2bNnkZKSgvfff9+i8RAREf0es5nZTA1I7YueyHoevOjTkv4bN26IESNGiCZNmgidTidatmwpxowZIwoKCoQQlRd5Tpo0Sej1euHj4yOmTJkiRowYUeNFn0IIcf/+fZGUlCSCg4OFi4uLiIiIEGvWrDH2z58/XwQFBQlJkkR8fLwQovJC1aVLl4rWrVsLZ2dn0bRpUxEXFycOHDhgfN/OnTtFRESE0Ol04sknnxRr1qyx+KLPadOmCX9/f+Hp6Sn++Mc/iiVLlghvb29j/5w5c0THjh3Fhx9+KEJCQoSrq6t4+eWXRX5+vsl2N2zYIDp16iRcXFyEr6+v6NWrl9i6dasQghd9EhFRJWbzwzGbyVZIQtRwpR4REREREZGG8LQ6IiIiIiIisDgiIiIiIiICwOKIiIiIiIgIAIsjIiIiIiIiACyOiIiIiIiIALA4IiIiIiIiAsDiiIiIiIiICACLIyIiIiIiIgAsjoiIiIiIiACwOCIiIiIiIgLA4oiIiIiIiAgA8P8BFTba/bf2CzQAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"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=[\"Less\", \"More\"]\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": [
"Значение 1049 в желтом квадрате представляет собой количество объектов, относимых к классу \"Less\", которые модель правильно классифицировала. Это свидетельствует о высоком уровне точности в идентификации этого класса.\n",
"Значение 558 в зеленом квадрате указывает на количество правильно классифицированных объектов класса \"More\". Хотя это также является положительным результатом, мы можем заметить, что он ниже, чем для класса \"Less\".\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Точность, полнота, верность (аккуратность), F-мера__"
]
},
{
"cell_type": "code",
"execution_count": 247,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \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",
" \n",
" \n",
" logistic \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" ridge \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" knn \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" naive_bayes \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" mlp \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" random_forest \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" decision_tree \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 0.998208 \n",
" 1.000000 \n",
" 0.999378 \n",
" 1.000000 \n",
" 0.999103 \n",
" \n",
" \n",
" gradient_boosting \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 0.998208 \n",
" 1.000000 \n",
" 0.999378 \n",
" 1.000000 \n",
" 0.999103 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 247,
"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, наивный байесовский классификатор, многослойную перцептронную сеть, случайный лес, дерево решений и градиентный бустинг, демонстрируют 100% точность (1.000000) на обучающей выборке.\n",
"Это указывает на то, что модели смогли полностью подстроиться под обучающие данные, что может стремительно указывать на возможное переобучение.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса__"
]
},
{
"cell_type": "code",
"execution_count": 248,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
" Accuracy_test \n",
" F1_test \n",
" ROC_AUC_test \n",
" Cohen_kappa_test \n",
" MCC_test \n",
" \n",
" \n",
" \n",
" \n",
" logistic \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" ridge \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" knn \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" naive_bayes \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" random_forest \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" gradient_boosting \n",
" 0.999378 \n",
" 0.999103 \n",
" 1.000000 \n",
" 0.998627 \n",
" 0.998628 \n",
" \n",
" \n",
" mlp \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" decision_tree \n",
" 0.999378 \n",
" 0.999103 \n",
" 0.999104 \n",
" 0.998627 \n",
" 0.998628 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 248,
"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": [
"Почти все модели, включая логистическую регрессию, ридж-регрессию, KNN, наивный байесовский классификатор, случайный лес и многослойную перцептронную сеть, достигли показателя ROC AUC равного 1.000000. Это говорит о том, что они идеально разделяют классы.\n",
"Градиентный бустинг и дерево решений немного уступили в значениях ROC AUC, составив 0.999378, что говорит о высокой, но не идеальной способности к классификации."
]
},
{
"cell_type": "code",
"execution_count": 249,
"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": 250,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Error items count: 0'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Predicted \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [Date, Predicted, Open, High, Low, Close, Adj Close, Volume, above_average_close, Close_Next_Day]\n",
"Index: []"
]
},
"execution_count": 250,
"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[\"above_average_close\"] != 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": 251,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
" 6863 \n",
" 2019-09-26 \n",
" 90.839996 \n",
" 91.150002 \n",
" 89.5 \n",
" 89.800003 \n",
" 81.286491 \n",
" 5026400 \n",
" 1 \n",
" 88.370003 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close Volume \\\n",
"6863 2019-09-26 90.839996 91.150002 89.5 89.800003 81.286491 5026400 \n",
"\n",
" above_average_close Close_Next_Day \n",
"6863 1 88.370003 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Close \n",
" Open \n",
" Adj Close \n",
" High \n",
" Low \n",
" Volume \n",
" above_average_close \n",
" Close_Next_Day \n",
" \n",
" \n",
" \n",
" \n",
" 6863 \n",
" 1.77257 \n",
" 1.803818 \n",
" 1.716146 \n",
" 1.78857 \n",
" 1.788959 \n",
" -0.702466 \n",
" 1.370164 \n",
" 88.370003 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Close Open Adj Close High Low Volume \\\n",
"6863 1.77257 1.803818 1.716146 1.78857 1.788959 -0.702466 \n",
"\n",
" above_average_close Close_Next_Day \n",
"6863 1.370164 88.370003 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'predicted: 1 (proba: [0. 1.])'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'real: 1'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = class_models[best_model][\"pipeline\"]\n",
"\n",
"example_id = 6863\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": 252,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'model__criterion': 'gini',\n",
" 'model__max_depth': 5,\n",
" 'model__max_features': 'log2',\n",
" 'model__n_estimators': 10}"
]
},
"execution_count": 252,
"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": 264,
"metadata": {},
"outputs": [],
"source": [
"optimized_model = ensemble.RandomForestClassifier(\n",
" random_state=random_state,\n",
" criterion=\"gini\",\n",
" max_depth=5,\n",
" max_features=\"log2\",\n",
" n_estimators=10,\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": 254,
"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": 255,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \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",
" Name \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Old \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" New \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 255,
"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": "markdown",
"metadata": {},
"source": [
"Как для обучающей (Precision_train), так и для тестовой (Precision_test) выборки обе модели достигли идеальных значений 1.000000. Это указывает на то, что модели очень точно классифицируют положительные образцы, не пропуская их."
]
},
{
"cell_type": "code",
"execution_count": 256,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
" Accuracy_test \n",
" F1_test \n",
" ROC_AUC_test \n",
" Cohen_kappa_test \n",
" MCC_test \n",
" \n",
" \n",
" Name \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Old \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
" New \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 256,
"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": "markdown",
"metadata": {},
"source": [
"Оба варианта модели продемонстрировали безупречную точность классификации, достигнув значения 1.000000. Это свидетельствует о том, что модели точно классифицировали все тестовые примеры, не допустив никаких ошибок в предсказаниях."
]
},
{
"cell_type": "code",
"execution_count": 257,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA2kAAAGsCAYAAABHMu+IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKIUlEQVR4nO3deXgV9d3+8fskIQshCwGSEA1hU0gqQoCKERSXSEBcKLb8sIBhKbRKVKCAWAUVlShWS0EKCrK18KB1oYqKIhYQiAgoLsgOCooJSExCwKxnfn9Qjh5ZnMOZ5Mw5eb+ua66HzEzmfCfNk9vPfD8z4zAMwxAAAAAAwBaCfD0AAAAAAMCPKNIAAAAAwEYo0gAAAADARijSAAAAAMBGKNIAAAAAwEYo0gAAAADARijSAAAAAMBGKNIAAAAAwEZCfD0AAMCZlZWVqaKiwrLjhYaGKjw83LLjAQDgCXLNPIo0ALChsrIytUhpoPzD1ZYdMzExUfv37w/YQAMA2Be55hmKNACwoYqKCuUfrtb+LSmKjvK+M73kmFMtOn2lioqKgAwzAIC9kWueoUgDABuLjgqyJMwAALADcs0cijQAsLFqw6lqw5rjAADga+SaORRpAGBjThlyyvs0s+IYAAB4i1wzh7lGAAAAALARZtIAwMaccsqKhg5rjgIAgHfINXMo0gDAxqoNQ9WG9y0dVhwDAABvkWvm0O4IAAAAADbCTBoA2Bg3WAMAAgm5Zg5FGgDYmFOGqgkzAECAINfMod0RAAAAAGyEmTQAsDHaQgAAgYRcM4eZNAAAAACwEYo0ALCxU48qtmLxxNq1a3XTTTcpKSlJDodDy5Ytc9tuGIYmTZqkpk2bKiIiQpmZmdq9e7fbPoWFhRowYICio6MVGxurYcOGqbS01G2fTz/9VFdeeaXCw8OVnJysqVOnntfPCQDgH3yVa5J/ZRtFGgDYmNPCxRPHjx9X+/btNXPmzDNunzp1qqZPn67Zs2dr48aNioyMVFZWlsrKylz7DBgwQNu2bdPKlSu1fPlyrV27ViNGjHBtLykpUY8ePZSSkqItW7boySef1EMPPaTnnnvOw9ECAPyFr3JN8q9scxhGgL8JDgD8UElJiWJiYrRje4Kiory/nnbsmFNtUwtUXFys6Ohoj77X4XDo1VdfVZ8+fSSdvNKYlJSkP//5zxo7dqwkqbi4WAkJCVqwYIH69++v7du3Ky0tTZs2bVLnzp0lSStWrNANN9ygr7/+WklJSZo1a5buv/9+5efnKzQ0VJI0YcIELVu2TDt27PD6nAEA9mGnXJPsn23MpAGAjVX/71HFVizSyZD86VJeXu7xmPbv36/8/HxlZma61sXExKhLly7Ky8uTJOXl5Sk2NtYVYpKUmZmpoKAgbdy40bXPVVdd5QoxScrKytLOnTv1/fffn9fPCwBgb3bMNcl+2UaRBgA2Vm1Yt0hScnKyYmJiXEtubq7HY8rPz5ckJSQkuK1PSEhwbcvPz1d8fLzb9pCQEMXFxbntc6Zj/PQzAACBxY65Jtkv23gEPwDUIQcPHnRrCwkLC/PhaAAA8E6g5hozaQBgY1bfYB0dHe22nE+YJSYmSpIKCgrc1hcUFLi2JSYm6vDhw27bq6qqVFhY6LbPmY7x088AAAQWO+aaZL9so0gDABtzyqFqCxanHJaNqUWLFkpMTNSqVatc60pKSrRx40ZlZGRIkjIyMlRUVKQtW7a49nnvvffkdDrVpUsX1z5r165VZWWla5+VK1eqTZs2atiwoWXjBQDYhx1zTbJftlGkAQBOU1paqq1bt2rr1q2STt5QvXXrVh04cEAOh0OjRo3So48+qtdee02fffaZbr/9diUlJbmekpWamqqePXtq+PDh+vDDD7V+/Xrl5OSof//+SkpKkiT9/ve/V2hoqIYNG6Zt27bphRde0N///neNGTPGR2cNAAhk/pRt3JMGADbmNE4uVhzHE5s3b9Y111zj+vpUuGRnZ2vBggUaP368jh8/rhEjRqioqEjdunXTihUrFB4e7vqexYsXKycnR9ddd52CgoJ06623avr06a7tMTExeueddzRy5Eh16tRJjRs31qRJk9zeNwMACCy+yjXJv7KN96QBgA2dep/M5m0JamDB+2RKjznV+Vfn/z4ZAAC8Qa55hpk0ALCxU733VhwHAABfI9fMoUgDABsjzAAAgYRcM4cHhwAAAACAjTCTBgA25jQcchreXy204hgAAHiLXDOHIg0AbIy2EABAICHXzKHdEQAAAABshJk0ALCxagWp2oLradUWjAUAAG+Ra+ZQpAGAjRkW9e4bAd67DwDwD+SaObQ7AgAAAICNMJMGADbGDdYAgEBCrplDkQYANlZtBKnasKB337BgMAAAeIlcM4d2RwAAAACwEWbSAMDGnHLIacH1NKcC/JIjAMAvkGvmMJMGAAAAADbCTBoA2Bg3WAMAAgm5Zg5FGgDYmHU3WAd2WwgAwD+Qa+bQ7ggAAAAANsJMGgDY2MkbrL1v6bDiGAAAeItcM4ciDQBszKkgVfMULABAgCDXzKHdEQAAAABshJk0ALAxbrAGAAQScs0cijQAsDGngnjpJwAgYJBr5tDuCAAAAAA2wkwaANhYteFQtWHBSz8tOAYAAN4i18xhJg0AAAAAbISZNACwsWqLHlVcHeC9+wAA/0CumUORBgA25jSC5LTgKVjOAH8KFgDAP5Br5tDuCAAAAAA2wkwaANgYbSEAgEBCrplDkQYANuaUNU+wcno/FAAAvEaumUO7IwAAAADYCDNpAGBjTgXJacH1NCuOAQCAt8g1cyjSAMDGqo0gVVvwFCwrjgEAgLfINXMC++wAAAAAwM8wkwYANuaUQ05ZcYO198cAAMBb5Jo5FGkAYGO0hQAAAgm5Zk5gnx0AAAAA+Blm0gDAxqx76SfX5AAAvkeumRPYZwcAAAAAfoaZNBOcTqcOHTqkqKgoORyBfZMiAO8ZhqFjx44pKSlJQUHeXQtzGg45DQtusLbgGAgc5BoAT5BrtY8izYRDhw4pOTnZ18MA4GcOHjyoCy+80KtjOC1qCwn0l37CM+QagPNBrtUeijQToqKiJElffdRc0Q0C+xcCnvvNxe18PQTYTJUqtU5vuv52AHZDruFcyDX8HLlW+yjSTDjVChLdIEjRUYQZ3IU46vl6CLAb4+T/saKNzGkEyWnBY4atOAYCB7mGcyHXcBpyrdZRpAGAjVXLoWoLXthpxTEAAPAWuWZOYJegAAAAAOBnmEkDABujLQQAEEjINXMo0gDAxqplTUtHtfdDAQDAa+SaOYFdggIAAACAn2EmDQBsjLYQAEAgIdfMCeyzAwAAAAA/w0waANhYtRGkaguuFlpxDAAAvEWumUORBgA2ZsghpwU3WBsB/j4ZAIB/INfMCewSFAAAAAD8DDNpAGBjtIUAAAIJuWYORRoA2JjTcMhpeN/SYcUxAADwFrlmTmCXoAAAAADgZ5hJAwAbq1aQqi24nmbFMQAA8Ba5Zg5FGgDYGG0hAIBAQq6ZE9glKAAAAAD4GWbSAMDGnAqS04LraVYcAwAAb5Fr5lCkAYCNVRsOVVvQ0mHFMQAA8Ba5Zk5gl6AAAAAA4GeYSQMAG+MGawBAICHXzGEmDQAAAABshJk0ALAxwwiS0/D+epphwTEAAPAWuWZOYJ8dAPi5ajksWzz63OpqTZw4US1atFBERIRatWqlRx55RIZhuPYxDEOTJk1S06ZNFRERoczMTO3evdvtOIWFhRowYICio6MVGxurYcOGqbS01JKfDQDA/5Br5lCkAQBO88QTT2jWrFl65plntH37dj3xxBOaOnWqZsyY4dpn6tSpmj59umbPnq2NGzcqMjJSWVlZKisrc+0zYMAAbdu2TStXrtTy5cu1du1ajRgxwhenBACow/wt12h3BAAbcxrW3BztNH55n5/asGGDbrnlFvXu3VuS1Lx5c/3f//2fPvzwQ0knrzZOmzZNDzzwgG655RZJ0qJFi5SQkKBly5apf//+2r59u1asWKFNmzapc+fOkqQZM2bohhtu0F//+lclJSV5fV4AAP9CrpnDTBoA2Jjzf737ViySVFJS4raUl5ef8XOvuOIKrVq1Srt27ZIkffLJJ1q3bp169eolSdq/f7/y8/OVmZnp+p6YmBh16dJFeXl5kqS8vDzFxsa6gkySMjMzFRQUpI0bN9bIzwsAYG/kmjnMpAFAHZKcnOz29YMPPqiHHnrotP0mTJigkpIStW3bVsHBwaqurtZjjz2mAQMGSJLy8/MlSQkJCW7fl5CQ4NqWn5+v+Ph4t+0hISGKi4tz7QMAgDcCNdco0gDAxpxyyOnhzdFnO44kHTx4UNHR0a71YWFhZ9z/xRdf1OLFi7VkyRL96le/0tatWzVq1CglJSUpOzvb6/EAAOomcs0cijQAsLFqw6FqC3r3Tx0jOjraLczOZty4cZowYYL69+8vSWrXrp2++uor5ebmKjs7W4mJiZKkgoICNW3a1PV9BQUF6tChgyQpMTFRhw8fdjtuVVWVCgsLXd8PAKhbyDVzuCcNAHCaEydOKCjIPSKCg4PldDolSS1atFBiYqJWrVrl2l5SUqKNGzcqIyNDkpSRkaGioiJt2bLFtc97770np9OpLl261MJZAABwkr/lGjNpAGBjP7052tvjeOKmm27SY489pmbNmulXv/qVPv74Yz399NMaOnSoJMnhcGjUqFF69NFHddFFF6lFixaaOHGikpKS1KdPH0lSamqqevbsqeHDh2v27NmqrKxUTk6O+vfvz5MdAaCOItfMoUgDAJxmxowZmjhxou68804dPnxYSUlJ+uMf/6hJkya59hk/fryOHz+uESNGqKioSN26ddOKFSsUHh7u2mfx4sXKycnRddddp6CgIN16662aPn26L04JAFCH+VuuOYyfvmYbZ1RSUqKYmBh9v6uloqPoEIW7rKQOvh4CbKbKqNRq/UfFxcWm+uTP5NTfnX6rBik0MtTrMVUcr9CL1/3TqzEhcJBrOBdyDT9HrtU+ZtIAwMYMi56CZVhwDAAAvEWumcPlMwAAAACwEWbSAMDGnIZDTgseVWzFMQAA8Ba5Zg5FGgDYmK+eggUAQE0g18wJ7LMDAAAAAD/DTBoA2BhtIQCAQEKumUORBgA25rToKVhWHAMAAG+Ra+bQ7ggAAAAANsJMGgDYGG0hAIBAQq6ZQ5EGADZGmAEAAgm5Zg7tjgAAAABgI8ykAYCNccURABBIyDVzmEkDAAAAABthJg0AbIwrjgCAQEKumUORBgA2Zsiad8EY3g8FAACvkWvm0O4IAAAAADbCTBoA2BhtIQCAQEKumUORBgA2RpgBAAIJuWYO7Y4AAAAAYCPMpAGAjXHFEQAQSMg1cyjSAMDGCDMAQCAh18yh3REAAAAAbISZNACwMcNwyLDgaqEVxwAAwFvkmjnMpAEAAACAjTCTBgA25pRDTlnQu2/BMQAA8Ba5Zg5FGgDYGDdYAwACCblmDu2OddBnH0Rq0u0tdFv6r5SV1EEb3opx224Y0sKpibqtw690U8tLdW+/VvpmX+gZj1VR7tAdmW2UldRBez+PcNu25rVY3ZHZRje3vFSDfp2mf/+jSY2dE3zrpsHfaeHGL/T6vk/19+W71abDCV8PCUAdQq7BauQafM1WRdrgwYPVp08fXw8j4JWdCFLLX/2gnClfn3H7izPj9Z95TXTX4wf19+W7FF7fqb/8vpUqyk6/YvH8o0lqlFh52vpN70XpiZwU9b79Oz373x3Kyf1ar8yJ13/mNbb8fOBb3W/+XiMePKTFTydqZNbF2vdFuB5bsk8xjU7/vYDnTt1gbcWC2keu1Q5yDVYi12oWuWaOrYo01I5fX3tMg+/NV9dexadtMwxp2dwmuu2efF3Rs0Qt08o0fvpXOlpQTxtWuF+Z3PRelLasidLwSd+cdpx3X4rTFT2LdePtR9U0pUJdMkvUP6dAL86Ml2HU2KnBB/qO+E4rlsTpnRfidGB3uKbfe6HKf3Ao67ZCXw8tIJxqC7FiAQIVuQYrkWs1i1wzx2+KtM8//1y9evVSgwYNlJCQoEGDBum7775zbX/ppZfUrl07RUREqFGjRsrMzNTx48clSatXr9Zll12myMhIxcbGqmvXrvrqq698dSq2ln8gVIWH66njlaWudZHRTrVNP6HtWyJd674/EqJp45I1fsZXCos4PZ0qKxwKDXO6rQsNd+q7b0NV8PWZW0zgf0LqOXXRpSf00ftRrnWG4dDH70cprROtIcC5kGu1g1yDJ8g12IVfFGlFRUW69tprlZ6ers2bN2vFihUqKChQv379JEnffvutbrvtNg0dOlTbt2/X6tWr1bdvXxmGoaqqKvXp00fdu3fXp59+qry8PI0YMUIOx9mr7/LycpWUlLgtdUXh4ZPPkolt4j6lH9uk0rXNMKS/jmqm3oOO6uL2P5zxOJ2vPqZ1b8bo4/cbyOmUvt4bppefjT/5GQU8ryZQRMdVKzhEKjri/r/p99+FqGGTKh+NKrDQFhKYyLXaQ67BE+RazSPXzPGLvyrPPPOM0tPTNWXKFNe6efPmKTk5Wbt27VJpaamqqqrUt29fpaSkSJLatWsnSSosLFRxcbFuvPFGtWrVSpKUmpp6zs/Lzc3Vww8/XENn4//+83xj/VAapP93V8FZ9+k14KgOfRmqSdktVVXpUP2oav1m2BH986mmCvKLSwOAPRgWtXQEepj5G3LNXsg1oPaQa+b4xZ+VTz75RP/973/VoEED19K2bVtJ0t69e9W+fXtdd911ateunX73u99pzpw5+v777yVJcXFxGjx4sLKysnTTTTfp73//u7799ttzft59992n4uJi13Lw4MEaP0e7iIs/eZWo6Eg9t/VFR+q5tm1dH6XtWyJ1Y/P26pXcXkOuOPkfBzm9LtaT9zSTJDkc0h8e+FbLdn+qf374hZZu3aY26SfbBBJTymvrdFDDSgqDVV0lxf7s6mLDxlX6/ohfXAMCfIJcqz3kGjxBrsEu/KJIKy0t1U033aStW7e6Lbt379ZVV12l4OBgrVy5Um+99ZbS0tI0Y8YMtWnTRvv375ckzZ8/X3l5ebriiiv0wgsv6OKLL9YHH3xw1s8LCwtTdHS021JXJDarUFx8pT5e18C17vixIO34uL5SO528F+LOR77WrHd3atbKk8uj/9wnSfrL7C81+F73/1AIDpYaN61UvVBD/13WUKmdjiu2UXXtnRBqVFVlkHZ/Wl/p3Y651jkchjp0K9UXW+r7cGSBw9DJViyvF1+fCNyQa7WHXIMnyLWaR66Z4xeXBDp27KiXX35ZzZs3V0jImYfscDjUtWtXde3aVZMmTVJKSopeffVVjRkzRpKUnp6u9PR03XfffcrIyNCSJUt0+eWX1+Zp2MYPx4N0aH+Y6+v8g6Ha+3mEomKrFH9hpfr84Yj+7+8JuqBFuRKbVWjh1KZqlFCpK3qefGpW/IWVkn7s7Q+PPHkjdVJKhZoknVxffDRY778Rq0szSlVZHqR3XojT+8tj9eTLe2rvRFErXnmuscZOO6hdn9TXzo/r6zfDjyi8vlPvLI3z9dACglMOOWTBSz8tOAasQ65Zi1yDlci1mkWumWO7Iq24uFhbt251WzdixAjNmTNHt912m8aPH6+4uDjt2bNHS5cu1dy5c7V582atWrVKPXr0UHx8vDZu3KgjR44oNTVV+/fv13PPPaebb75ZSUlJ2rlzp3bv3q3bb7/dNydoA7s+qa/xv23t+vrZhy6QJF3fr1Bjpx1Qv5GHVXYiSH8fn6zSkmD96tfH9djifQoN9+yaxbv/jtOcyUkyDCm10wk9+dIetU3nyUiBZs1rDRXTqFq3j8tXwyZV2rctQvcPaKGi7+r98jcDdQC5VvPINViJXIMd2K5IW716tdLT093WDRs2TOvXr9e9996rHj16qLy8XCkpKerZs6eCgoIUHR2ttWvXatq0aSopKVFKSoqeeuop9erVSwUFBdqxY4cWLlyoo0ePqmnTpho5cqT++Mc/+ugMfa/9FaV6+9DWs253OKTs8fnKHp9v6niJyRWnHS+mUbWmvb7bi1HCn7w2v7Fem88LXWuCVU+wCvQbrO2MXKt55BqsRq7VHHLNHIdh8ArGX1JSUqKYmBh9v6uloqP84jY+1KKspA6+HgJspsqo1Gr9R8XFxed978+pvzuX/nusguuH/fI3/ILqE+X69Hd/9WpMCBzkGs6FXMPPkWu1z3YzaQCAHzkNhxwWXC204nHHAAB4i1wzhyINAGzs1FOsrDgOAAC+Rq6ZQ48DAAAAANgIM2kAYGPcYA0ACCTkmjkUaQBgY4QZACCQkGvm0O4IAAAAADbCTBoA2BhPwQIABBJyzRyKNACwMZ6CBQAIJOSaObQ7AgAAAICNMJMGADZ28oqjFTdYWzAYAAC8RK6Zw0waAAAAANgIM2kAYGM8qhgAEEjINXMo0gDAxoz/LVYcBwAAXyPXzKHdEQAAAABshJk0ALAx2kIAAIGEXDOHIg0A7Iy+EABAICHXTKHdEQAAAABshJk0ALAzi9pCFOBtIQAAP0GumUKRBgA2dvKln9YcBwAAXyPXzKHdEQAAAABshJk0ALAxnoIFAAgk5Jo5FGkAYGeGw5q++wAPMwCAnyDXTKHdEQAAAABshJk0ALAxbrAGAAQScs0cZtIAAAAAwEaYSQMAOzP+t1hxHAAAfI1cM4UiDQBsjKdgAQACCblmDu2OAAAAAGAjFGkAYHeGBct5+OabbzRw4EA1atRIERERateunTZv3vzjsAxDkyZNUtOmTRUREaHMzEzt3r3b7RiFhYUaMGCAoqOjFRsbq2HDhqm0tPT8BgQACAzk2i8y1e742muvmT7gzTfffN6DAQC481VbyPfff6+uXbvqmmuu0VtvvaUmTZpo9+7datiwoWufqVOnavr06Vq4cKFatGihiRMnKisrS1988YXCw8MlSQMGDNC3336rlStXqrKyUkOGDNGIESO0ZMkSr8/JG+QaAPgGuWaOqSKtT58+pg7mcDhUXV3tzXgAADbwxBNPKDk5WfPnz3eta9GihevfhmFo2rRpeuCBB3TLLbdIkhYtWqSEhAQtW7ZM/fv31/bt27VixQpt2rRJnTt3liTNmDFDN9xwg/76178qKSmpdk/qJ8g1AKhb/C3XTLU7Op1OUwtBBgAWs6Il5CetISUlJW5LeXn5GT/2tddeU+fOnfW73/1O8fHxSk9P15w5c1zb9+/fr/z8fGVmZrrWxcTEqEuXLsrLy5Mk5eXlKTY21hVkkpSZmamgoCBt3LjR6x+NN8g1APARcs0Ur+5JKysrs2ocAIAzcli4SMnJyYqJiXEtubm5Z/zUffv2adasWbrooov09ttv64477tDdd9+thQsXSpLy8/MlSQkJCW7fl5CQ4NqWn5+v+Ph4t+0hISGKi4tz7WM35BoA1DRyzQyPH8FfXV2tKVOmaPbs2SooKNCuXbvUsmVLTZw4Uc2bN9ewYcMsHSAAwDoHDx5UdHS06+uwsLAz7ud0OtW5c2dNmTJFkpSenq7PP/9cs2fPVnZ2dq2MtbaQawDgvwI11zyeSXvssce0YMECTZ06VaGhoa71l1xyiebOnWvp4ACgzrO4LSQ6OtptOVuYNW3aVGlpaW7rUlNTdeDAAUlSYmKiJKmgoMBtn4KCAte2xMREHT582G17VVWVCgsLXfvYAbkGALWIXDPF4yJt0aJFeu655zRgwAAFBwe71rdv3147duywdHAAAN/o2rWrdu7c6bZu165dSklJkXTyZuvExEStWrXKtb2kpEQbN25URkaGJCkjI0NFRUXasmWLa5/33ntPTqdTXbp0qYWzMIdcA4DA52+55nG74zfffKPWrVuftt7pdKqystKSQQEA/seL98GcdhwPjB49WldccYWmTJmifv366cMPP9Rzzz2n5557TtLJpx6OGjVKjz76qC666CLXo4qTkpJcT05MTU1Vz549NXz4cM2ePVuVlZXKyclR//79ffpkx58j1wCgFpFrpnhcpKWlpen99993VZ2nvPTSS0pPT7dsYAAASYbj5GLFcTzw61//Wq+++qruu+8+TZ48WS1atNC0adM0YMAA1z7jx4/X8ePHNWLECBUVFalbt25asWKF610ykrR48WLl5OTouuuuU1BQkG699VZNnz7d+/OxELkGALWIXDPF4yJt0qRJys7O1jfffCOn06lXXnlFO3fu1KJFi7R8+XLLBwgA8I0bb7xRN95441m3OxwOTZ48WZMnTz7rPnFxcT5/cfUvIdcAoG7wp1zz+J60W265Ra+//rreffddRUZGatKkSdq+fbtef/11XX/99TUxRgCoswzDugVnRq4BQO0h18zxeCZNkq688kqtXLnS6rEAAH7OR737dQ25BgC1hFwz5byKNEnavHmztm/fLulkP3+nTp0sGxQAALWNXAMA2IXHRdrXX3+t2267TevXr1dsbKwkqaioSFdccYWWLl2qCy+80OoxAkDd5aMbrOsScg0AahG5ZorH96T94Q9/UGVlpbZv367CwkIVFhZq+/btcjqd+sMf/lATYwSAOsthWLfgzMg1AKg95Jo5Hs+krVmzRhs2bFCbNm1c69q0aaMZM2boyiuvtHRwAADUNHINAGA3HhdpycnJZ3y5Z3V1ta1eTgoAAYEbrGscuQYAtYhcM8Xjdscnn3xSd911lzZv3uxat3nzZt1zzz3661//aungAKDOO9W7b8WCMyLXAKAWkWummJpJa9iwoRyOH38Qx48fV5cuXRQScvLbq6qqFBISoqFDh6pPnz41MlAAAKxC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s2bNUqtWrfTUU09Jktq0aaPPPvtMTzzxhEc/mwceeMD17+bNm2vs2LFaunSpW5iVlZVp0aJFuuCCCyRJM2bMUO/evfXUU08pMTFRDz74oJ566inXz6RFixb64osv9OyzzxJmAFADyLWzI9cAcyjS4DPLly9XgwYNVFlZKafTqd///vd66KGHXNvbtWvn1q//ySefaM+ePYqKinI7TllZmfbu3avi4mJ9++236tKli2tbSEiIOnfufFpryClbt25VcHCwunfvbnrce/bs0YkTJ3T99de7ra+oqFB6erokafv27W7jkOQKPk+88MILmj59uvbu3avS0lJVVVUpOjrabZ9mzZq5guzU5zidTu3cuVNRUVHau3evhg0bpuHDh7v2qaqqUkxMjMfjgQ8YsuiKo/eHAHBu5NovI9dArplDkQafueaaazRr1iyFhoYqKSlJISHuv46RkZFuX5eWlqpTp06udoefatKkyXmN4VSbhydKS0slSW+88YZbiEgn70ewSl5engYMGKCHH35YWVlZiomJ0dKlS11XMT0Z65w5c04L1+DgYMvGihpEWwjgN8i1cyPXIIlcM4kiDT4TGRmp1q1bm96/Y8eOeuGFFxQfH3/aVbdTmjZtqo0bN+qqq66SdPLK2pYtW9SxY8cz7t+uXTs5nU6tWbPG1RbyU6eueFZXV7vWpaWlKSwsTAcOHDjrlcrU1FTXzeKnfPDBB798kj+xYcMGpaSk6P7773et++qrr07b78CBAzp06JCSkpJcnxMUFKQ2bdooISFBSUlJ2rdvnwYMGODR5wMAPEOunRu5BpjH0x3hNwYMGKDGjRvrlltu0fvvv6/9+/dr9erVuvvuu/X1119Lku655x49/vjjWrZsmXbs2KE777zznO+Cad68ubKzszV06FAtW7bMdcwXX3xRkpSSkiKHw6Hly5fryJEjKi0tVVRUlMaOHavRo0dr4cKF2rt3rz766CPNmDFDCxculCT96U9/0u7duzVu3Djt3LlTS5Ys0YIFCzw634suukgHDhzQ0qVLtXfvXk2fPl2vvvrqafuFh4crOztbn3zyid5//33dfffd6tevnxITEyVJDz/8sHJzczV9+nTt2rVLn332mebPn6+nn37ao/HAR5xO6xYAtkKukWt1ErlmCkUa/Eb9+vW1du1aNWvWTH379lVqaqqGDRumsrIy1xXIP//5zxo0aJCys7OVkZGhqKgo/eY3vznncWfNmqXf/va3uvPOO9W2bVsNHz5cx48flyRdcMEFevjhhzVhwgQlJCQoJydHkvTII49o4sSJys3NVWpqqnr27Kk33nhDLVq0kHSyn/7ll1/WsmXL1L59e82ePVtTpkzx6HxvvvlmjR49Wjk5OerQoYM2bNigiRMnnrZf69at1bdvX91www3q0aOHLr30UrdHEf/hD3/Q3LlzNX/+fLVr107du3fXggULXGMFAPgGuUauAWfjMM525ykAwGdKSkoUExOjzCbDFBLk/Qtvq5wVevfI8youLj5rWxUAADWFXPMM96QBgJ1xgzUAIJCQa6bQ7ggAAAAANsJMGgDYmdOQJS+DcQb2FUcAgJ8g10yhSAMAGzMMpwzD+ydYWXEMAAC8Ra6ZQ7sjAAAAANgIM2kAYGeGYU1LR4DfYA0A8BPkmikUaQBgZ4ZFvfsBHmYAAD9BrplCuyMAAAAA2AgzaQBgZ06n5LDg5ugAv8EaAOAnyDVTKNIAwM5oCwEABBJyzRTaHQEAAADARphJAwAbM5xOGRa0hQT6+2QAAP6BXDOHmTQAAAAAsBFm0gDAzujdBwAEEnLNFIo0ALAzpyE5CDMAQIAg10yh3REAAAAAbISZNACwM8OQZMX7ZAL7iiMAwE+Qa6ZQpAGAjRlOQ4YFbSFGgIcZAMA/kGvm0O4IAAAAADZCkQYAdmY4rVvOw8yZM9W8eXOFh4erS5cu+vDDDy0+QQBAnUKumUKRBgA2ZjgNyxZPvfDCCxozZowefPBBffTRR2rfvr2ysrJ0+PDhGjhTAEBdQK6ZQ5EGADijp59+WsOHD9eQIUOUlpam2bNnq379+po3b56vhwYAgMf8Kdco0gDAznzUFlJRUaEtW7YoMzPTtS4oKEiZmZnKy8uz+iwBAHUFuWYKT3cEABurUqVkwQOsqlQpSSopKXFbHxYWprCwsNP2/+6771RdXa2EhAS39QkJCdqxY4f3AwIA1EnkmjkUaQBgQ6GhoUpMTNS6/DctO2aDBg2UnJzstu7BBx/UQw89ZNlnAABwJuSaZyjSAMCGwsPDtX//flVUVFh2TMMw5HA43Nad6WqjJDVu3FjBwcEqKChwW19QUKDExETLxgQAqBvINc9QpAGATYWHhys8PNwnnx0aGqpOnTpp1apV6tOnjyTJ6XRq1apVysnJ8cmYAAD+jVwzjyINAHBGY8aMUXZ2tjp37qzLLrtM06ZN0/HjxzVkyBBfDw0AAI/5U65RpAEAzuj//b//pyNHjmjSpEnKz89Xhw4dtGLFitNuugYAwB/4U645DMOw4PkqAAAAAAAr8J40AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwEYo0AAAAALARijQAAAAAsBGKNAAAAACwkf8PqFGlVOVqGGoAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"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=[\"Less\", \"More\"]\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": [
"В желтом квадрате мы видим значение 1049, что обозначает количество правильно классифицированных объектов, отнесенных к классу \"Less\". Это свидетельствует о том, что модель успешно идентифицирует объекты этого класса, минимизируя количество ложных положительных срабатываний.\n",
"\n",
"В зеленом квадрате значение 558 указывает на количество правильно классифицированных объектов, отнесенных к классу \"More\". Это также является показателем высокой точности модели в определении объектов данного класса."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "aimenv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}