1784 lines
337 KiB
Plaintext
1784 lines
337 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"##Лабораторная 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Index(['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'], dtype='object')\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"df = pd.read_csv(\"data/starbucks.csv\")\n",
|
||
"print(df.columns)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Бизнес-цели"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование посетителей в магазине:\n",
|
||
"\n",
|
||
"Цель: Разработать модель, которая будет предсказывать объем выкупленного кофе основе: цены открытия, цены закрытия, самой высокой цене, самой низкой цене\n",
|
||
"Применение:\n",
|
||
"Узнать, какие лучше цены выставлять на кофе\n",
|
||
"\n",
|
||
"2. Оптимизация цен на кофе:\n",
|
||
"Цель: Определить оптимальную цену на кофе, чтобы объем их скупа был больше.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование посетителей в магазине"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"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 volume_volatility \n",
|
||
"0 1 584004800 \n",
|
||
"1 1 584004800 \n",
|
||
"2 1 584004800 \n",
|
||
"3 1 584004800 \n",
|
||
"4 0 584004800 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Устанавливаем случайное состояние\n",
|
||
"random_state = 28\n",
|
||
"\n",
|
||
"# Рассчитываем среднее значение объема\n",
|
||
"average_count = df['Volume'].mean()\n",
|
||
"print(f\"Среднее значение поля 'Volume: {average_count}\")\n",
|
||
"\n",
|
||
"# Создаем новую переменную, указывающую, превышает ли объемная продажа среднюю\n",
|
||
"df[\"above_average_volume\"] = (df[\"Volume\"] > average_count).astype(int)\n",
|
||
"\n",
|
||
"# Рассчитываем волатильность (разницу между максимальной и минимальной объемная продажаю)\n",
|
||
"df[\"volume_volatility\"] = df[\"Volume\"].max() - df[\"Volume\"].min()\n",
|
||
"\n",
|
||
"# Выводим первые строки измененной таблицы для проверки\n",
|
||
"print(df.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2. Оптимизация параметров магазина:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Средняя объемная продажа для 'Open':\n",
|
||
"Open\n",
|
||
"0.328125 224358400.0\n",
|
||
"0.339844 58732800.0\n",
|
||
"0.351563 9331200.0\n",
|
||
"0.355469 13081600.0\n",
|
||
"0.359375 12518400.0\n",
|
||
" ... \n",
|
||
"122.559998 11747000.0\n",
|
||
"122.930000 6618400.0\n",
|
||
"124.550003 7934200.0\n",
|
||
"125.739998 4827500.0\n",
|
||
"126.080002 6110900.0\n",
|
||
"Name: Volume, Length: 5300, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа для 'Close':\n",
|
||
"Close\n",
|
||
"0.335938 224358400.0\n",
|
||
"0.347656 25139200.0\n",
|
||
"0.355469 12182400.0\n",
|
||
"0.359375 31328000.0\n",
|
||
"0.363281 11040000.0\n",
|
||
" ... \n",
|
||
"122.410004 11747000.0\n",
|
||
"122.629997 7172300.0\n",
|
||
"125.970001 7934200.0\n",
|
||
"126.029999 6110900.0\n",
|
||
"126.059998 4827500.0\n",
|
||
"Name: Volume, Length: 5440, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа для 'High':\n",
|
||
"High\n",
|
||
"0.347656 2.243584e+08\n",
|
||
"0.355469 1.063893e+07\n",
|
||
"0.359375 1.207893e+07\n",
|
||
"0.367188 3.488640e+07\n",
|
||
"0.371094 2.038720e+07\n",
|
||
" ... \n",
|
||
"123.330002 1.174700e+07\n",
|
||
"123.470001 6.618400e+06\n",
|
||
"126.099998 4.827500e+06\n",
|
||
"126.160004 6.110900e+06\n",
|
||
"126.320000 7.934200e+06\n",
|
||
"Name: Volume, Length: 5245, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа для 'Low':\n",
|
||
"Low\n",
|
||
"0.320313 224358400.0\n",
|
||
"0.332031 58732800.0\n",
|
||
"0.339844 18316800.0\n",
|
||
"0.343750 25139200.0\n",
|
||
"0.347656 8584000.0\n",
|
||
" ... \n",
|
||
"121.389999 11747000.0\n",
|
||
"122.139999 6618400.0\n",
|
||
"123.919998 7934200.0\n",
|
||
"124.250000 4827500.0\n",
|
||
"124.809998 6110900.0\n",
|
||
"Name: Volume, Length: 5223, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа для комбинации 'Open' и 'Close':\n",
|
||
"Open Close \n",
|
||
"0.328125 0.335938 224358400.0\n",
|
||
"0.339844 0.359375 58732800.0\n",
|
||
"0.351563 0.355469 12035200.0\n",
|
||
" 0.359375 3923200.0\n",
|
||
"0.355469 0.347656 15500800.0\n",
|
||
" ... \n",
|
||
"122.559998 122.410004 11747000.0\n",
|
||
"122.930000 122.379997 6618400.0\n",
|
||
"124.550003 125.970001 7934200.0\n",
|
||
"125.739998 126.059998 4827500.0\n",
|
||
"126.080002 126.029999 6110900.0\n",
|
||
"Name: Volume, Length: 7825, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа для комбинации 'High' и 'Low':\n",
|
||
"High Low \n",
|
||
"0.347656 0.320313 224358400.0\n",
|
||
"0.355469 0.343750 15500800.0\n",
|
||
" 0.347656 8208000.0\n",
|
||
"0.359375 0.339844 18316800.0\n",
|
||
" 0.347656 8960000.0\n",
|
||
" ... \n",
|
||
"123.330002 121.389999 11747000.0\n",
|
||
"123.470001 122.139999 6618400.0\n",
|
||
"126.099998 124.250000 4827500.0\n",
|
||
"126.160004 124.809998 6110900.0\n",
|
||
"126.320000 123.919998 7934200.0\n",
|
||
"Name: Volume, Length: 7662, dtype: float64\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Устанавливаем случайное состояние\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"# Рассчитываем среднюю объемную продажу для каждого значения каждого признака\n",
|
||
"for column in [\"Open\", \"Close\", \"High\", \"Low\"]:\n",
|
||
" print(f\"Средняя объемная продажа для '{column}':\")\n",
|
||
" print(df.groupby(column)[\"Volume\"].mean())\n",
|
||
" print()\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"Средняя объемная продажа для комбинации 'Open' и 'Close':\")\n",
|
||
"print(df.groupby([\"Open\", \"Close\"])[\"Volume\"].mean())\n",
|
||
"print()\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"Средняя объемная продажа для комбинации 'High' и 'Low':\")\n",
|
||
"print(df.groupby([\"High\", \"Low\"])[\"Volume\"].mean())\n",
|
||
"print()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Выбор ориентира:\n",
|
||
"1. Прогнозирование стоимости акций взносов:\n",
|
||
"Ориентир:\n",
|
||
"\n",
|
||
"R² (коэффициент детерминации): 0.75 - 0.85\n",
|
||
"\n",
|
||
"MAE (средняя абсолютная ошибка): 1000000 - 1500000 продаж\n",
|
||
"\n",
|
||
"RMSE (среднеквадратичная ошибка): 1200000 - 1600000 продаж"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"MAE: 3991467.1377542643\n",
|
||
"MSE: 46938455671077.555\n",
|
||
"RMSE: 6851164.548533158\n",
|
||
"R²: 0.5289490019636116\n",
|
||
"Ориентиры для прогнозирования не достигнуты.\n",
|
||
"Средняя объемная продажа 'Open':\n",
|
||
"Open\n",
|
||
"0.328125 224358400.0\n",
|
||
"0.339844 58732800.0\n",
|
||
"0.351563 9331200.0\n",
|
||
"0.355469 13081600.0\n",
|
||
"0.359375 12518400.0\n",
|
||
" ... \n",
|
||
"122.559998 11747000.0\n",
|
||
"122.930000 6618400.0\n",
|
||
"124.550003 7934200.0\n",
|
||
"125.739998 4827500.0\n",
|
||
"126.080002 6110900.0\n",
|
||
"Name: Volume, Length: 5300, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа 'High':\n",
|
||
"High\n",
|
||
"0.347656 2.243584e+08\n",
|
||
"0.355469 1.063893e+07\n",
|
||
"0.359375 1.207893e+07\n",
|
||
"0.367188 3.488640e+07\n",
|
||
"0.371094 2.038720e+07\n",
|
||
" ... \n",
|
||
"123.330002 1.174700e+07\n",
|
||
"123.470001 6.618400e+06\n",
|
||
"126.099998 4.827500e+06\n",
|
||
"126.160004 6.110900e+06\n",
|
||
"126.320000 7.934200e+06\n",
|
||
"Name: Volume, Length: 5245, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа 'Close':\n",
|
||
"Close\n",
|
||
"0.335938 224358400.0\n",
|
||
"0.347656 25139200.0\n",
|
||
"0.355469 12182400.0\n",
|
||
"0.359375 31328000.0\n",
|
||
"0.363281 11040000.0\n",
|
||
" ... \n",
|
||
"122.410004 11747000.0\n",
|
||
"122.629997 7172300.0\n",
|
||
"125.970001 7934200.0\n",
|
||
"126.029999 6110900.0\n",
|
||
"126.059998 4827500.0\n",
|
||
"Name: Volume, Length: 5440, dtype: float64\n",
|
||
"\n",
|
||
"Средняя объемная продажа 'Low':\n",
|
||
"Low\n",
|
||
"0.320313 224358400.0\n",
|
||
"0.332031 58732800.0\n",
|
||
"0.339844 18316800.0\n",
|
||
"0.343750 25139200.0\n",
|
||
"0.347656 8584000.0\n",
|
||
" ... \n",
|
||
"121.389999 11747000.0\n",
|
||
"122.139999 6618400.0\n",
|
||
"123.919998 7934200.0\n",
|
||
"124.250000 4827500.0\n",
|
||
"124.809998 6110900.0\n",
|
||
"Name: Volume, Length: 5223, dtype: float64\n",
|
||
"\n",
|
||
"Средняя посещаемость взносов для комбинации 'Open' и 'Close':\n",
|
||
"Open Close \n",
|
||
"0.328125 0.335938 224358400.0\n",
|
||
"0.339844 0.359375 58732800.0\n",
|
||
"0.351563 0.355469 12035200.0\n",
|
||
" 0.359375 3923200.0\n",
|
||
"0.355469 0.347656 15500800.0\n",
|
||
" ... \n",
|
||
"122.559998 122.410004 11747000.0\n",
|
||
"122.930000 122.379997 6618400.0\n",
|
||
"124.550003 125.970001 7934200.0\n",
|
||
"125.739998 126.059998 4827500.0\n",
|
||
"126.080002 126.029999 6110900.0\n",
|
||
"Name: Volume, Length: 7825, dtype: float64\n",
|
||
"\n",
|
||
"Средняя посещаемость взносов для комбинации 'High' и 'Low':\n",
|
||
"High Low \n",
|
||
"0.347656 0.320313 224358400.0\n",
|
||
"0.355469 0.343750 15500800.0\n",
|
||
" 0.347656 8208000.0\n",
|
||
"0.359375 0.339844 18316800.0\n",
|
||
" 0.347656 8960000.0\n",
|
||
" ... \n",
|
||
"123.330002 121.389999 11747000.0\n",
|
||
"123.470001 122.139999 6618400.0\n",
|
||
"126.099998 124.250000 4827500.0\n",
|
||
"126.160004 124.809998 6110900.0\n",
|
||
"126.320000 123.919998 7934200.0\n",
|
||
"Name: Volume, Length: 7662, dtype: float64\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
|
||
"\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y)\n",
|
||
"\n",
|
||
"X = df.drop(columns=[\"Volume\", \"Date\"], axis=1)\n",
|
||
"\n",
|
||
"y = df[\"Volume\"]\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Стандартизируем признаки\n",
|
||
"scaler = StandardScaler()\n",
|
||
"X_train = scaler.fit_transform(X_train)\n",
|
||
"X_test = scaler.transform(X_test)\n",
|
||
"\n",
|
||
"# Обучаем модель линейной регрессии\n",
|
||
"model = LinearRegression()\n",
|
||
"model.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"# Делаем предсказания на тестовой выборке\n",
|
||
"y_pred = model.predict(X_test)\n",
|
||
"\n",
|
||
"# Оцениваем качество модели\n",
|
||
"mae = mean_absolute_error(y_test, y_pred)\n",
|
||
"mse = mean_squared_error(y_test, y_pred)\n",
|
||
"rmse = mean_squared_error(y_test, y_pred, squared=False)\n",
|
||
"r2 = r2_score(y_test, y_pred)\n",
|
||
"\n",
|
||
"print(f\"MAE: {mae}\")\n",
|
||
"print(f\"MSE: {mse}\")\n",
|
||
"print(f\"RMSE: {rmse}\")\n",
|
||
"print(f\"R²: {r2}\")\n",
|
||
"\n",
|
||
"# Проверяем, достигнуты ли ориентиры\n",
|
||
"if r2 >= 0.75 and mae <= 1500000 and rmse <= 1700000:\n",
|
||
" print(\"Ориентиры для прогнозирования достигнуты!\")\n",
|
||
"else:\n",
|
||
" print(\"Ориентиры для прогнозирования не достигнуты.\")\n",
|
||
"\n",
|
||
"\n",
|
||
"columns_to_group = [\n",
|
||
" \"Open\",\n",
|
||
" \"High\",\n",
|
||
" \"Close\", \"Low\"\n",
|
||
"]\n",
|
||
"\n",
|
||
"# Рассчитываем среднюю объемная продажа для каждого значения каждого признака\n",
|
||
"for column in columns_to_group:\n",
|
||
" print(f\"Средняя объемная продажа '{column}':\")\n",
|
||
" print(df.groupby(column)[\"Volume\"].mean())\n",
|
||
" print()\n",
|
||
"\n",
|
||
"# Рассчитываем среднюю объемная продажа для комбинаций признаков\n",
|
||
"\n",
|
||
"print(\n",
|
||
" \"Средняя посещаемость взносов для комбинации 'Open' и 'Close':\"\n",
|
||
")\n",
|
||
"print(df.groupby([\"Open\", \"Close\"])[\"Volume\"].mean())\n",
|
||
"print()\n",
|
||
"\n",
|
||
"print(\n",
|
||
" \"Средняя посещаемость взносов для комбинации 'High' и 'Low':\"\n",
|
||
")\n",
|
||
"print(df.groupby([\"High\", \"Low\"])[\"Volume\"].mean())\n",
|
||
"print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Анализ применимости алгоритмов обучения с учителем для решения поставленных задач:\n",
|
||
"1. Прогнозирование посещаемости магазинов:\n",
|
||
"Задача: Регрессия\n",
|
||
"\n",
|
||
"Свойства алгоритмов:\n",
|
||
"\n",
|
||
"Линейная регрессия:\n",
|
||
"Применимость: Хорошо подходит для задач, где зависимость между признаками и целевой переменной линейна.\n",
|
||
"Преимущества: Проста в реализации, интерпретируема.\n",
|
||
"Недостатки: Может плохо работать, если зависимость нелинейна.\n",
|
||
"\n",
|
||
"Деревья решений (регрессия):\n",
|
||
"Применимость: Подходит для задач с нелинейными зависимостями.\n",
|
||
"Преимущества: Может обрабатывать категориальные признаки, не требует масштабирования данных.\n",
|
||
"Недостатки: Подвержены переобучению, могут давать нестабильные результаты.\n",
|
||
"\n",
|
||
"Случайный лес (регрессия):\n",
|
||
"Применимость: Хорошо подходит для задач с нелинейными зависимостями и большим количеством признаков.\n",
|
||
"Преимущества: Устойчив к переобучению, может обрабатывать категориальные признаки.\n",
|
||
"Недостатки: Менее интерпретируем, чем линейная регрессия.\n",
|
||
"\n",
|
||
"Градиентный бустинг (регрессия):\n",
|
||
"Применимость: Подходит для задач с нелинейными зависимостями и сложными взаимосвязями между признаками.\n",
|
||
"Преимущества: Может достигать высокой точности, устойчив к переобучению.\n",
|
||
"Недостатки: Сложнее в настройке, чем случайный лес, менее интерпретируем.\n",
|
||
"\n",
|
||
"Нейронные сети (регрессия):\n",
|
||
"Применимость: Подходит для задач с очень сложными зависимостями и большим количеством данных.\n",
|
||
"Преимущества: Может моделировать очень сложные зависимости.\n",
|
||
"Недостатки: Требует большого количества данных, сложнее в настройке и интерпретации.\n",
|
||
"\n",
|
||
"Вывод:\n",
|
||
"\n",
|
||
"Линейная регрессия: Может быть хорошим выбором для начала, особенно если зависимость между признаками и целевой переменной линейна.\n",
|
||
"\n",
|
||
"Деревья решений и случайный лес: Подходят для задач с нелинейными зависимостями.\n",
|
||
"\n",
|
||
"Градиентный бустинг: Может давать более высокую точность, чем случайный лес, но требует больше времени на настройку.\n",
|
||
"\n",
|
||
"Нейронные сети: Могут быть излишними для этой задачи, если данных недостаточно много.\n",
|
||
"\n",
|
||
"2. Оптимизация тарифной сетки:\n",
|
||
"Задача: Классификация (группировка клиентов по группам риска)\n",
|
||
"\n",
|
||
"Свойства алгоритмов:\n",
|
||
"\n",
|
||
"Логистическая регрессия:\n",
|
||
"Применимость: Хорошо подходит для задач бинарной классификации, где зависимость между признаками и целевой переменной линейна.\n",
|
||
"Преимущества: Проста в реализации, интерпретируема.\n",
|
||
"Недостатки: Может плохо работать, если зависимость нелинейна.\n",
|
||
"\n",
|
||
"Деревья решений (классификация):\n",
|
||
"Применимость: Подходит для задач с нелинейными зависимостями.\n",
|
||
"Преимущества: Может обрабатывать категориальные признаки, не требует масштабирования данных.\n",
|
||
"Недостатки: Подвержены переобучению, могут давать нестабильные результаты.\n",
|
||
"\n",
|
||
"Случайный лес (классификация):\n",
|
||
"Применимость: Хорошо подходит для задач с нелинейными зависимостями и большим количеством признаков.\n",
|
||
"Преимущества: Устойчив к переобучению, может обрабатывать категориальные признаки.\n",
|
||
"Недостатки: Менее интерпретируем, чем линейная регрессия.\n",
|
||
"\n",
|
||
"Градиентный бустинг (классификация):\n",
|
||
"Применимость: Подходит для задач с нелинейными зависимостями и сложными взаимосвязями между признаками.\n",
|
||
"Преимущества: Может достигать высокой точности, устойчив к переобучению.\n",
|
||
"Недостатки: Сложнее в настройке, чем случайный лес, менее интерпретируем.\n",
|
||
"\n",
|
||
"Нейронные сети (классификация):\n",
|
||
"Применимость: Подходит для задач с очень сложными зависимостями и большим количеством данных.\n",
|
||
"Преимущества: Может моделировать очень сложные зависимости.\n",
|
||
"Недостатки: Требует большого количества данных, сложнее в настройке и интерпретации.\n",
|
||
"\n",
|
||
"Вывод:\n",
|
||
"\n",
|
||
"Логистическая регрессия: Может быть хорошим выбором для начала, особенно если зависимость между признаками и целевой переменной линейна.\n",
|
||
"\n",
|
||
"Деревья решений и случайный лес: Подходят для задач с нелинейными зависимостями.\n",
|
||
"\n",
|
||
"Градиентный бустинг: Может давать более высокую точность, чем случайный лес, но требует больше времени на настройку.\n",
|
||
"\n",
|
||
"Нейронные сети: Могут быть излишними для этой задачи, если данных недостаточно много.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование стоимости акций:\n",
|
||
"Выбранные модели:\n",
|
||
"\n",
|
||
"Линейная регрессия\n",
|
||
"\n",
|
||
"Случайный лес (регрессия)\n",
|
||
"\n",
|
||
"Градиентный бустинг (регрессия)\n",
|
||
"\n",
|
||
"2. Оптимизация тарифной сетки:\n",
|
||
"Выбранные модели:\n",
|
||
"\n",
|
||
"Логистическая регрессия\n",
|
||
"\n",
|
||
"Случайный лес (классификация)\n",
|
||
"\n",
|
||
"Градиентный бустинг (классификация)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи регрессии:\n",
|
||
"Model: Linear Regression\n",
|
||
"MAE: 3991467.1377542643\n",
|
||
"MSE: 46938455671077.555\n",
|
||
"RMSE: 6851164.548533158\n",
|
||
"R²: 0.5289490019636116\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Regression\n",
|
||
"MAE: 3632387.72405058\n",
|
||
"MSE: 36255672119329.99\n",
|
||
"RMSE: 6021268.314842812\n",
|
||
"R²: 0.6361561050076534\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Gradient Boosting Regression\n",
|
||
"MAE: 3762986.930251514\n",
|
||
"MSE: 32821664355184.965\n",
|
||
"RMSE: 5729019.493350059\n",
|
||
"R²: 0.6706180991537869\n",
|
||
"\n",
|
||
"Результаты для задачи классификации:\n",
|
||
"Model: Logistic Regression\n",
|
||
"Accuracy: 1.0\n",
|
||
"\n",
|
||
"Model: Random Forest Classification\n",
|
||
"Accuracy: 1.0\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Classification\n",
|
||
"Accuracy: 1.0\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression, LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
|
||
"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
|
||
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score, accuracy_score\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df.drop(columns = [\"Volume\", \"Date\"], axis=1)\n",
|
||
"y_reg = df[\"Volume\"]\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи регрессии\n",
|
||
"X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Стандартизируем признаки для задачи регрессии\n",
|
||
"scaler_reg = StandardScaler()\n",
|
||
"X_train_reg = scaler_reg.fit_transform(X_train_reg)\n",
|
||
"X_test_reg = scaler_reg.transform(X_test_reg)\n",
|
||
"\n",
|
||
"# Список моделей для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": LinearRegression(),\n",
|
||
" \"Random Forest Regression\": RandomForestRegressor(),\n",
|
||
" \"Gradient Boosting Regression\": GradientBoostingRegressor()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи регрессии\n",
|
||
"print(\"Результаты для задачи регрессии:\")\n",
|
||
"for name, model in models_reg.items():\n",
|
||
" model.fit(X_train_reg, y_train_reg)\n",
|
||
" y_pred_reg = model.predict(X_test_reg)\n",
|
||
" mae = mean_absolute_error(y_test_reg, y_pred_reg)\n",
|
||
" mse = mean_squared_error(y_test_reg, y_pred_reg)\n",
|
||
" rmse = mean_squared_error(y_test_reg, y_pred_reg, squared=False)\n",
|
||
" r2 = r2_score(y_test_reg, y_pred_reg)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"MAE: {mae}\")\n",
|
||
" print(f\"MSE: {mse}\")\n",
|
||
" print(f\"RMSE: {rmse}\")\n",
|
||
" print(f\"R²: {r2}\")\n",
|
||
" print()\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df.drop(columns=[\"Volume\", \"Date\"], axis=1)\n",
|
||
"y_class = (df[\"Volume\"] > df[\"Volume\"].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи классификации\n",
|
||
"X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Стандартизируем признаки для задачи классификации\n",
|
||
"scaler_class = StandardScaler()\n",
|
||
"X_train_class = scaler_class.fit_transform(X_train_class)\n",
|
||
"X_test_class = scaler_class.transform(X_test_class)\n",
|
||
"\n",
|
||
"# Список моделей для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": LogisticRegression(),\n",
|
||
" \"Random Forest Classification\": RandomForestClassifier(),\n",
|
||
" \"Gradient Boosting Classification\": GradientBoostingClassifier()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи классификации\n",
|
||
"print(\"Результаты для задачи классификации:\")\n",
|
||
"for name, model in models_class.items():\n",
|
||
" model.fit(X_train_class, y_train_class)\n",
|
||
" y_pred_class = model.predict(X_test_class)\n",
|
||
" accuracy = accuracy_score(y_test_class, y_pred_class)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Accuracy: {accuracy}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование стоимости акций:\n",
|
||
"Конвейер для задачи регрессии:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи регрессии:\n",
|
||
"Model: Linear Regression\n",
|
||
"MAE: 5864823.098654955\n",
|
||
"MSE: 79729784253194.64\n",
|
||
"RMSE: 8929153.613484016\n",
|
||
"R²: 0.19987153584955009\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Regression\n",
|
||
"MAE: 4775882.923204809\n",
|
||
"MSE: 53290061861042.07\n",
|
||
"RMSE: 7300004.237056446\n",
|
||
"R²: 0.4652074409739847\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Regression\n",
|
||
"MAE: 5397945.863176441\n",
|
||
"MSE: 62387989562365.266\n",
|
||
"RMSE: 7898606.811480444\n",
|
||
"R²: 0.37390516307625066\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Список моделей для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": LinearRegression(),\n",
|
||
" \"Random Forest Regression\": RandomForestRegressor(),\n",
|
||
" \"Gradient Boosting Regression\": GradientBoostingRegressor()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df[numerical_cols]\n",
|
||
"y_reg = df[\"Volume\"]\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи регрессии\n",
|
||
"X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи регрессии\n",
|
||
"print(\"Результаты для задачи регрессии:\")\n",
|
||
"for name, model in models_reg.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" pipeline.fit(X_train_reg, y_train_reg)\n",
|
||
" y_pred_reg = pipeline.predict(X_test_reg)\n",
|
||
" mae = mean_absolute_error(y_test_reg, y_pred_reg)\n",
|
||
" mse = mean_squared_error(y_test_reg, y_pred_reg)\n",
|
||
" rmse = mean_squared_error(y_test_reg, y_pred_reg, squared=False)\n",
|
||
" r2 = r2_score(y_test_reg, y_pred_reg)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"MAE: {mae}\")\n",
|
||
" print(f\"MSE: {mse}\")\n",
|
||
" print(f\"RMSE: {rmse}\")\n",
|
||
" print(f\"R²: {r2}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2. Оптимизация характеристик магазина:\n",
|
||
"Конвейер для задачи классификации:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи классификации:\n",
|
||
"Model: Logistic Regression\n",
|
||
"Accuracy: 0.6648009950248757\n",
|
||
"\n",
|
||
"Model: Random Forest Classification\n",
|
||
"Accuracy: 0.7568407960199005\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Classification\n",
|
||
"Accuracy: 0.7437810945273632\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn.metrics import accuracy_score\n",
|
||
"\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Список моделей для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": LogisticRegression(),\n",
|
||
" \"Random Forest Classification\": RandomForestClassifier(),\n",
|
||
" \"Gradient Boosting Classification\": GradientBoostingClassifier()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df[numerical_cols]\n",
|
||
"y_class = (df[\"Volume\"] > df[\"Volume\"].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи классификации\n",
|
||
"X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи классификации\n",
|
||
"print(\"Результаты для задачи классификации:\")\n",
|
||
"for name, model in models_class.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" pipeline.fit(X_train_class, y_train_class)\n",
|
||
" y_pred_class = pipeline.predict(X_test_class)\n",
|
||
" accuracy = accuracy_score(y_test_class, y_pred_class)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Accuracy: {accuracy}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование посещения:\n",
|
||
"\n",
|
||
"Настройка гиперпараметров для задачи регрессии:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи регрессии:\n",
|
||
"Model: Linear Regression\n",
|
||
"Best Parameters: {}\n",
|
||
"MAE: 5864823.098654955\n",
|
||
"MSE: 79729784253194.64\n",
|
||
"RMSE: 8929153.613484016\n",
|
||
"R²: 0.19987153584955009\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Regression\n",
|
||
"Best Parameters: {'model__max_depth': None, 'model__n_estimators': 200}\n",
|
||
"MAE: 4765190.037919035\n",
|
||
"MSE: 52229952422553.555\n",
|
||
"RMSE: 7227029.2944302885\n",
|
||
"R²: 0.4758461720930298\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Regression\n",
|
||
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
|
||
"MAE: 4991448.210803198\n",
|
||
"MSE: 55277620586398.51\n",
|
||
"RMSE: 7434892.10321162\n",
|
||
"R²: 0.4452612900440134\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
|
||
"\n",
|
||
"\n",
|
||
"# Определяем категориальные и числовые столбцы\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Список моделей и их гиперпараметров для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": (LinearRegression(), {}),\n",
|
||
" \"Random Forest Regression\": (RandomForestRegressor(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__max_depth': [None, 10, 20]\n",
|
||
" }),\n",
|
||
" \"Gradient Boosting Regression\": (GradientBoostingRegressor(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__learning_rate': [0.01, 0.1],\n",
|
||
" 'model__max_depth': [3, 5]\n",
|
||
" })\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df[numerical_cols]\n",
|
||
"y_reg = df['Volume']\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи регрессии\n",
|
||
"X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи регрессии\n",
|
||
"print(\"Результаты для задачи регрессии:\")\n",
|
||
"for name, (model, params) in models_reg.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='neg_mean_absolute_error')\n",
|
||
" grid_search.fit(X_train_reg, y_train_reg)\n",
|
||
" best_model = grid_search.best_estimator_\n",
|
||
" y_pred_reg = best_model.predict(X_test_reg)\n",
|
||
" mae = mean_absolute_error(y_test_reg, y_pred_reg)\n",
|
||
" mse = mean_squared_error(y_test_reg, y_pred_reg)\n",
|
||
" rmse = mean_squared_error(y_test_reg, y_pred_reg, squared=False)\n",
|
||
" r2 = r2_score(y_test_reg, y_pred_reg)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
|
||
" print(f\"MAE: {mae}\")\n",
|
||
" print(f\"MSE: {mse}\")\n",
|
||
" print(f\"RMSE: {rmse}\")\n",
|
||
" print(f\"R²: {r2}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2. Оптимизация характеристик:\n",
|
||
"\n",
|
||
"Настройка гиперпараметров для задачи классификации:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи классификации:\n",
|
||
"Model: Logistic Regression\n",
|
||
"Best Parameters: {'model__C': 10, 'model__solver': 'liblinear'}\n",
|
||
"Accuracy: 0.6865671641791045\n",
|
||
"\n",
|
||
"Model: Random Forest Classification\n",
|
||
"Best Parameters: {'model__max_depth': 20, 'model__n_estimators': 100}\n",
|
||
"Accuracy: 0.7562189054726368\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Classification\n",
|
||
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
|
||
"Accuracy: 0.7475124378109452\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn.metrics import accuracy_score\n",
|
||
"\n",
|
||
"# Определяем категориальные и числовые столбцы\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Список моделей и их гиперпараметров для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": (LogisticRegression(), {\n",
|
||
" 'model__C': [0.1, 1, 10],\n",
|
||
" 'model__solver': ['liblinear', 'lbfgs']\n",
|
||
" }),\n",
|
||
" \"Random Forest Classification\": (RandomForestClassifier(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__max_depth': [None, 10, 20]\n",
|
||
" }),\n",
|
||
" \"Gradient Boosting Classification\": (GradientBoostingClassifier(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__learning_rate': [0.01, 0.1],\n",
|
||
" 'model__max_depth': [3, 5]\n",
|
||
" })\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df[numerical_cols]\n",
|
||
"y_class = (df['Volume'] > df['Volume'].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи классификации\n",
|
||
"X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи классификации\n",
|
||
"print(\"Результаты для задачи классификации:\")\n",
|
||
"for name, (model, params) in models_class.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='accuracy')\n",
|
||
" grid_search.fit(X_train_class, y_train_class)\n",
|
||
" best_model = grid_search.best_estimator_\n",
|
||
" y_pred_class = best_model.predict(X_test_class)\n",
|
||
" accuracy = accuracy_score(y_test_class, y_pred_class)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
|
||
" print(f\"Accuracy: {accuracy}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Прогнозирование посещаемости::\n",
|
||
"Задача: Регрессия\n",
|
||
"\n",
|
||
"Выбор метрик:\n",
|
||
"\n",
|
||
"MAE (Mean Absolute Error): Средняя абсолютная ошибка. Показывает среднее отклонение предсказанных значений от фактических. Эта метрика легко интерпретируется, так как она измеряется в тех же единицах, что и целевая переменная \n",
|
||
"\n",
|
||
"MSE (Mean Squared Error): Среднеквадратичная ошибка. Показывает среднее квадратичное отклонение предсказанных значений от фактических. Эта метрика чувствительна к выбросам, так как ошибки возводятся в квадрат.\n",
|
||
"\n",
|
||
"RMSE (Root Mean Squared Error): Квадратный корень из среднеквадратичной ошибки. Показывает среднее отклонение предсказанных значений от фактических в тех же единицах, что и целевая переменная. Эта метрика также чувствительна к выбросам, но легче интерпретируется, чем MSE.\n",
|
||
"\n",
|
||
"R² (R-squared): Коэффициент детерминации. Показывает, какую долю дисперсии целевой переменной объясняет модель. Значение R² близкое к 1 указывает на хорошее качество модели.\n",
|
||
"\n",
|
||
"Обоснование:\n",
|
||
"\n",
|
||
"MAE: Хорошо подходит для задач, где важно понимать среднее отклонение предсказаний от фактических значений.\n",
|
||
"\n",
|
||
"MSE и RMSE: Полезны для задач, где важно минимизировать влияние выбросов, так как они возводят ошибки в квадрат.\n",
|
||
"\n",
|
||
"R²: Позволяет оценить, насколько хорошо модель объясняет вариацию целевой переменной.\n",
|
||
"\n",
|
||
"2. Оптимизация характеристик:\n",
|
||
"Задача: Классификация\n",
|
||
"\n",
|
||
"Выбор метрик:\n",
|
||
"\n",
|
||
"Accuracy: Доля правильных предсказаний среди всех предсказаний. Эта метрика показывает общую точность модели.\n",
|
||
"\n",
|
||
"Precision: Доля правильных положительных предсказаний среди всех положительных предсказаний. Эта метрика важна, если важно минимизировать количество ложноположительных результатов.\n",
|
||
"\n",
|
||
"Recall (Sensitivity): Доля правильных положительных предсказаний среди всех фактических положительных случаев. Эта метрика важна, если важно минимизировать количество ложноотрицательных результатов.\n",
|
||
"\n",
|
||
"F1-score: Гармоническое среднее между precision и recall. Эта метрика показывает баланс между precision и recall.\n",
|
||
"\n",
|
||
"Обоснование:\n",
|
||
"\n",
|
||
"Accuracy: Хорошо подходит для задач, где классы сбалансированы.\n",
|
||
"\n",
|
||
"Precision и Recall: Важны для задач, где важно минимизировать ошибки определенного типа (ложноположительные или ложноотрицательные).\n",
|
||
"\n",
|
||
"F1-score: Позволяет оценить баланс между precision и recall."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Результаты для задачи регрессии:\n",
|
||
"Model: Linear Regression\n",
|
||
"Best Parameters: {}\n",
|
||
"MAE: 5864823.098654955\n",
|
||
"MSE: 79729784253194.64\n",
|
||
"RMSE: 8929153.613484016\n",
|
||
"R²: 0.19987153584955009\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Regression\n",
|
||
"Best Parameters: {'model__max_depth': 20, 'model__n_estimators': 200}\n",
|
||
"MAE: 4736367.925802057\n",
|
||
"MSE: 49837093302660.92\n",
|
||
"RMSE: 7059539.17070094\n",
|
||
"R²: 0.49985971622163283\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_regression.py:492: FutureWarning: 'squared' is deprecated in version 1.4 and will be removed in 1.6. To calculate the root mean squared error, use the function'root_mean_squared_error'.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Gradient Boosting Regression\n",
|
||
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
|
||
"MAE: 4996200.504513187\n",
|
||
"MSE: 55572704024621.99\n",
|
||
"RMSE: 7454710.190518608\n",
|
||
"R²: 0.4422999794066711\n",
|
||
"\n",
|
||
"Результаты для задачи классификации:\n",
|
||
"Model: Logistic Regression\n",
|
||
"Best Parameters: {'model__C': 10, 'model__solver': 'liblinear'}\n",
|
||
"Accuracy: 0.6865671641791045\n",
|
||
"Precision: 0.5378548895899053\n",
|
||
"Recall: 0.6177536231884058\n",
|
||
"F1-score: 0.5750421585160203\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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gahMpKelokX96khJSVGZ5Cilgr8TjWfug66hsVpt5WVm4M+gD8o03rLAHgoiIiKJSLnKQ9MwoSAiIpIIHw5GREREpAb2UBAREUmEQx5ERESkNm0e8mBCQUREJBFt7qHgHAoiIiJSG3soiIiIpCLBkEcpbpRZqTChICIikgiHPIiIiIjUwB4KIiIiiXCVBxEREamNQx5EREREamAPBRERkUQ45EFERERq45AHERERkRrYQ0FERCQRbe6hYEJBREQkEc6hICIiIrVpcw8F51AQERGR2thDQUREJBEOeRAREZHaOORBREREpAb2UBAREUlEBgmGPCSJpPwxoSAiIpKIjkwGHTUzCnWPrygc8iAiIiK1sYeCiIhIIlzlQURERGrT5lUeTCiIiIgkoiPL39RtQxNxDgURERGpjT0UREREUpFJMGShoT0UTCiIiIgkos2TMjnkQURERGpjDwUREZFEZP//n7ptaCImFERERBLhKg8iIiIiNbCHgoiISCK8sdUb7Nu3r8QNfvDBB28dDBERkSbT5lUeJUooevXqVaLGZDIZ8vLy1ImHiIiINFCJEgqlUlnWcRAREWk8bX58uVpzKDIzM2FoaChVLERERBpNm4c8Sr3KIy8vD/PmzUONGjVgYmKCO3fuAABmz56NDRs2SB4gERGRpiiYlKnupolKnVB89dVXCA0NRXBwMAwMDMTyRo0aYf369ZIGR0RERJqh1AnF5s2bsXbtWgwaNAi6urpieZMmTXDz5k1JgyMiItIkBUMe6m6aqNRzKB4+fIi6desWKlcqlcjJyZEkKCIiIk2kzZMyS91D4eLigt9++61QeVhYGJo1ayZJUERERKRZSt1D8cUXX8DX1xcPHz6EUqnEnj17EBMTg82bN2P//v1lESMREZFGkP3/pm4bmqjUPRQ9e/bEL7/8gqNHj8LY2BhffPEFoqOj8csvv6Br165lESMREZFG0OZVHm91H4r27dsjPDxc6liIiIhIQ731ja3Onz+P6OhoAPnzKlq0aCFZUERERJpImx9fXuqE4sGDBxgwYADOnDkDc3NzAEBycjLatm2LHTt2oGbNmlLHSEREpBG0+WmjpZ5DMWLECOTk5CA6OhpJSUlISkpCdHQ0lEolRowYURYxEhERUSVX6h6KkydPIjIyEg0aNBDLGjRogOXLl6N9+/aSBkdERKRpNLSDQW2l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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Classification\n",
|
||
"Best Parameters: {'model__max_depth': 20, 'model__n_estimators': 100}\n",
|
||
"Accuracy: 0.7574626865671642\n",
|
||
"Precision: 0.6483516483516484\n",
|
||
"Recall: 0.6413043478260869\n",
|
||
"F1-score: 0.644808743169399\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Gradient Boosting Classification\n",
|
||
"Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 5, 'model__n_estimators': 200}\n",
|
||
"Accuracy: 0.7493781094527363\n",
|
||
"Precision: 0.6469428007889546\n",
|
||
"Recall: 0.5942028985507246\n",
|
||
"F1-score: 0.619452313503305\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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nKyVpUhMTNSMuXB2dsbRo0e16sidBZLfuIxX0TugmDFjRr7rJ06ciNTUVH2rIyIi+s+Q8uZgSqVSK6DQRWpqKq5du4aePXuifv36MDMzw+7du9GpUycAz68lFR8fD19fXwCAr68vpkyZgqSkJDg6OgIAYmJioFQq9R7WINnNwXr06IFffvlFquqIiIjoNUaMGIH9+/fj5s2biI2NRceOHWFqaopu3brB1tYWffr0wbBhw7B3716cOHECvXr1gq+vLxo3bgwACAgIgLe3N3r27IkzZ85gx44dGDduHMLCwnTKiLxIstuXx8XFwdzcXKrqiIiIjI5MBoMHZeqz+7///otu3brh4cOHcHBwQJMmTXD48GE4ODgAeN6rYGJigk6dOiEjIwOBgYGYO3euZn9TU1Ns3rwZAwcOhK+vL6ysrBASEoKIiAi92613QBEcHKz1WAiBe/fu4fjx47ywFRERlWhFfent1atXv3K7ubk55syZgzlz5hRYxsPDA1u3btX9oAXQO6CwtbXVemxiYoJq1aohIiICAQEBBjeIiIiIjI9eAUVOTg569eoFHx8flC5durDaREREZJSkHJRpbPQalGlqaoqAgADeVZSIiCgfMon+GSO9Z3nUrFkT169fL4y2EBERGbXcDIWhizHSO6D45ptvMGLECGzevBn37t2DSqXSWoiIiKjk0XkMRUREBIYPH462bdsCAD788EOtS3ALISCTyZCTkyN9K4mIiIxASR5DoXNAMWnSJAwYMAB79+4tzPYQEREZLZlM9sr7XelahzHSOaAQQgAAmjdvXmiNISIiIuOk17RRY42aiIiIigK7PHRUtWrV1wYVjx49MqhBRERExqqor5T5NtEroJg0aVKeK2USERER6RVQdO3aVXN7UyIiItJmIpMZfHMwQ/cvLjoHFBw/QURE9GoleQyFzhe2yp3lQURERPQynTMUarW6MNtBRERk/CQYlGmkt/LQ//blRERElD8TyGBiYERg6P7FhQEFERGRRErytFG9bw5GRERE9DJmKIiIiCRSkmd5MKAgIiKSSEm+DgW7PIiIiMhgzFAQERFJpCQPymRAQUREJBETSNDlYaTTRtnlQURERAZjhoKIiEgi7PIgIiIig5nA8NS/sXYdGGu7iYiI6C3CDAUREZFEZDIZZAb2WRi6f3FhQEFERCQRGQy/WahxhhMMKIiI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27dvCwDi8uXL4sSJEwKAuHnzZp59Hz58KACIffv2FVaziV4r972dlJQkFAqFuHnzprh586YwNzcX9+/fF+3btxchISEiNTVVmJmZiZUrV2r2zczMFK6urmLatGlCCCH27t0rAIiNGzdqyqSnpwtLS0sRGxurddw+ffqIbt26Fc1JEumBdxulYnHmzBns3bsX1tbWebZdu3YNAQEBeP/99+Hj44PAwEAEBASgc+fOKF26NOzt7REaGorAwEC0atUK/v7+6NKlC1xcXIrhTKikc3BwQFBQEKKioiCEQFBQEMqWLavZfu3aNWRlZcHPz0+zzszMDA0bNsTFixe16mrQoIHm/1evXkVaWhpatWqlVSYzM1OrO4XobcGAgopFamoq2rVrh++++y7PNhcXF5iamiImJgaxsbHYuXMnZs+eja+++gpHjhyBp6cnli5diiFDhmD79u347bffMG7cOMTExKBx48bFcDZU0vXu3RuDBg0CAMyZM+eN67GystL8PzU1FQCwZcsWlCtXTqsc7wFCbyOOoaBiUa9ePZw/fx4VKlRA5cqVtZbcD1WZTAY/Pz9MmjQJp06dglwux4YNGzR11K1bF2PHjkVsbCxq1qyJVatWFdfpUAnXunVrZGZmIisrC4GBgVrbKlWqBLlcjkOHDmnWZWVl4dixY/D29i6wTm9vbygUCsTHx+f5G3Fzcyu0cyF6U8xQUKFLSUnB6dOntdb1798fixYtQrdu3TBq1CjY29vj6tWrWL16NRYvXozjx49j9+7dCAgIgKOjI44cOYL79+/Dy8sLN27cwMKFC/Hhhx/C1dUVly9fxpUrV/Dpp58WzwlSiWdqaqrpvjA1NdXaZmVlhYEDB2LkyJGwt7eHu7s7pk2bhrS0NPTp06fAOm1sbDBixAiEh4dDrVajSZMmSElJwaFDh6BUKhESElKo50SkLwYUVOj27duXp8+3T58+OHToEEaPHo2AgABkZGTAw8MDrVu3homJCZRKJQ4cOICZM2dCpVLBw8MDP/zwA9q0aYPExERcunQJ0dHRePjwIVxcXBAWFobPPvusmM6QCFAqlQVu+/bbb6FWq9GzZ088efIEDRo0wI4dO1C6dOlX1jl58mQ4ODggMjIS169fh52dHerVq4cvv/xS6uYTGYy3LyciIiKDcQwFERERGYwBBRERERmMAQUREREZjAEFERER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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression, LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
|
||
"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn import metrics\n",
|
||
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score, accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, ConfusionMatrixDisplay\n",
|
||
"\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Список моделей и их гиперпараметров для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": (LinearRegression(), {}),\n",
|
||
" \"Random Forest Regression\": (RandomForestRegressor(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__max_depth': [None, 10, 20]\n",
|
||
" }),\n",
|
||
" \"Gradient Boosting Regression\": (GradientBoostingRegressor(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__learning_rate': [0.01, 0.1],\n",
|
||
" 'model__max_depth': [3, 5]\n",
|
||
" })\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df[numerical_cols]\n",
|
||
"y_reg = df['Volume']\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи регрессии\n",
|
||
"X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи регрессии\n",
|
||
"print(\"Результаты для задачи регрессии:\")\n",
|
||
"for name, (model, params) in models_reg.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='neg_mean_absolute_error')\n",
|
||
" grid_search.fit(X_train_reg, y_train_reg)\n",
|
||
" best_model = grid_search.best_estimator_\n",
|
||
" y_pred_reg = best_model.predict(X_test_reg)\n",
|
||
" mae = mean_absolute_error(y_test_reg, y_pred_reg)\n",
|
||
" mse = mean_squared_error(y_test_reg, y_pred_reg)\n",
|
||
" rmse = mean_squared_error(y_test_reg, y_pred_reg, squared=False)\n",
|
||
" r2 = r2_score(y_test_reg, y_pred_reg)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
|
||
" print(f\"MAE: {mae}\")\n",
|
||
" print(f\"MSE: {mse}\")\n",
|
||
" print(f\"RMSE: {rmse}\")\n",
|
||
" print(f\"R²: {r2}\")\n",
|
||
" print()\n",
|
||
"\n",
|
||
"# Список моделей и их гиперпараметров для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": (LogisticRegression(), {\n",
|
||
" 'model__C': [0.1, 1, 10],\n",
|
||
" 'model__solver': ['liblinear', 'lbfgs']\n",
|
||
" }),\n",
|
||
" \"Random Forest Classification\": (RandomForestClassifier(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__max_depth': [None, 10, 20]\n",
|
||
" }),\n",
|
||
" \"Gradient Boosting Classification\": (GradientBoostingClassifier(), {\n",
|
||
" 'model__n_estimators': [100, 200],\n",
|
||
" 'model__learning_rate': [0.01, 0.1],\n",
|
||
" 'model__max_depth': [3, 5]\n",
|
||
" })\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df[numerical_cols]\n",
|
||
"y_class = (df['Volume'] > df['Volume'].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Разделяем данные на обучающую и тестовую выборки для задачи классификации\n",
|
||
"X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_class, y_class, test_size=0.2, random_state=42)\n",
|
||
"\n",
|
||
"# Обучаем и оцениваем модели для задачи классификации\n",
|
||
"print(\"Результаты для задачи классификации:\")\n",
|
||
"for name, (model, params) in models_class.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" grid_search = GridSearchCV(pipeline, params, cv=5, scoring='accuracy')\n",
|
||
" grid_search.fit(X_train_class, y_train_class)\n",
|
||
" best_model = grid_search.best_estimator_\n",
|
||
" y_pred_class = best_model.predict(X_test_class)\n",
|
||
" accuracy = accuracy_score(y_test_class, y_pred_class)\n",
|
||
" precision = precision_score(y_test_class, y_pred_class)\n",
|
||
" recall = recall_score(y_test_class, y_pred_class)\n",
|
||
" f1 = f1_score(y_test_class, y_pred_class)\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Best Parameters: {grid_search.best_params_}\")\n",
|
||
" print(f\"Accuracy: {accuracy}\")\n",
|
||
" print(f\"Precision: {precision}\")\n",
|
||
" print(f\"Recall: {recall}\")\n",
|
||
" print(f\"F1-score: {f1}\")\n",
|
||
" print()\n",
|
||
"\n",
|
||
" # Визуализация матрицы ошибок\n",
|
||
" cm = confusion_matrix(y_test_class, y_pred_class)\n",
|
||
" disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['Less', 'More'])\n",
|
||
" disp.plot(cmap=plt.cm.Blues)\n",
|
||
" plt.title(f'Confusion Matrix for {name}')\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
" fpr, tpr, _ = metrics.roc_curve(y_test_class, y_pred_class)\n",
|
||
"# построение ROC кривой\n",
|
||
"plt.plot(fpr, tpr)\n",
|
||
"plt.ylabel(\"True Positive Rate\")\n",
|
||
"plt.xlabel(\"False Positive Rate\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Давайте проанализируем полученные значения метрик и определим, являются ли они нормальными или есть возможность улушчения.\n",
|
||
"\n",
|
||
"### Оценка смещения и дисперсии для задачи регрессии:\n",
|
||
"\n",
|
||
"### Вывод для задачи регрессии:\n",
|
||
"\n",
|
||
"- **Random Forest Regression** демонстрирует наилучшие результаты по метрикам MAE и R², что указывает на высокую точность и стабильность модели.\n",
|
||
"- **Linear Regression** и **Gradient Boosting Regression** также показывают хорошие результаты, но уступают случайному лесу.\n",
|
||
"\n",
|
||
"### Вывод для задачи классификации:\n",
|
||
"\n",
|
||
"- **Random Forest Classification** демонстрирует наилучшие результаты по всем метрикам (Accuracy, Precision, Recall, F1-score), что указывает на высокую точность и стабильность модели.\n",
|
||
"- **Logistic Regression** и **Gradient Boosting Classification** также показывают хорошие результаты, но уступают случайному лесу.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Для оценки смещения (bias) и дисперсии (variance) моделей можно использовать метод перекрестной проверки (cross-validation). Этот метод позволяет оценить, насколько хорошо модель обобщается на новых данных.\n",
|
||
"\n",
|
||
"Оценка смещения и дисперсии для задачи регрессии:\n",
|
||
"Для задачи регрессии мы будем использовать метрики MAE (Mean Absolute Error) и R² (R-squared) для оценки смещения и дисперсии.\n",
|
||
"\n",
|
||
"Оценка смещения и дисперсии для задачи классификации:\n",
|
||
"Для задачи классификации мы будем использовать метрики Accuracy, Precision, Recall и F1-score для оценки смещения и дисперсии.\n",
|
||
"\n",
|
||
"Пример кода для оценки смещения и дисперсии:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Оценка смещения и дисперсии для задачи регрессии:\n",
|
||
"Model: Linear Regression\n",
|
||
"MAE (Cross-Validation): Mean = 7579277.521464063, Std = 1960011.680230822\n",
|
||
"R² (Cross-Validation): Mean = -1.1347990784665143, Std = 2.306562184953969\n",
|
||
"\n",
|
||
"Model: Random Forest Regression\n",
|
||
"MAE (Cross-Validation): Mean = 7806347.158011436, Std = 3478782.4486245485\n",
|
||
"R² (Cross-Validation): Mean = -0.1365001480998081, Std = 0.12973311964755527\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Regression\n",
|
||
"MAE (Cross-Validation): Mean = 7893683.279353255, Std = 3518932.5109060933\n",
|
||
"R² (Cross-Validation): Mean = -0.1057513351347448, Std = 0.08711611953829208\n",
|
||
"\n",
|
||
"Оценка смещения и дисперсии для задачи классификации:\n",
|
||
"Model: Logistic Regression\n",
|
||
"Accuracy (Cross-Validation): Mean = 0.5892532514775223, Std = 0.12093239665054567\n",
|
||
"Precision (Cross-Validation): Mean = 0.35360976489674945, Std = 0.34878959634336554\n",
|
||
"Recall (Cross-Validation): Mean = 0.41634103019538193, Std = 0.47748852647480444\n",
|
||
"F1-score (Cross-Validation): Mean = 0.26337058226161625, Std = 0.2700065991354378\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
|
||
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
|
||
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: Random Forest Classification\n",
|
||
"Accuracy (Cross-Validation): Mean = 0.3738201494085268, Std = 0.16711322364727796\n",
|
||
"Precision (Cross-Validation): Mean = 0.40131211828076446, Std = 0.30406982088770196\n",
|
||
"Recall (Cross-Validation): Mean = 0.48331005101041064, Std = 0.28204866326457984\n",
|
||
"F1-score (Cross-Validation): Mean = 0.32735686540449993, Std = 0.09990409789532408\n",
|
||
"\n",
|
||
"Model: Gradient Boosting Classification\n",
|
||
"Accuracy (Cross-Validation): Mean = 0.3266515895940335, Std = 0.17857049420400362\n",
|
||
"Precision (Cross-Validation): Mean = 0.36258531023350526, Std = 0.3286759742498122\n",
|
||
"Recall (Cross-Validation): Mean = 0.3801836880463708, Std = 0.3324199402098825\n",
|
||
"F1-score (Cross-Validation): Mean = 0.23705262823922438, Std = 0.15533217789069204\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import cross_val_score\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression, LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
|
||
"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"\n",
|
||
"# Определяем категориальные и числовые столбцы\n",
|
||
"\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df[numerical_cols]\n",
|
||
"y_reg = df['Volume']\n",
|
||
"\n",
|
||
"# Список моделей для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": LinearRegression(),\n",
|
||
" \"Random Forest Regression\": RandomForestRegressor(),\n",
|
||
" \"Gradient Boosting Regression\": GradientBoostingRegressor()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Оценка смещения и дисперсии для задачи регрессии\n",
|
||
"print(\"Оценка смещения и дисперсии для задачи регрессии:\")\n",
|
||
"for name, model in models_reg.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" mae_scores = -cross_val_score(pipeline, X_reg, y_reg, cv=5, scoring='neg_mean_absolute_error')\n",
|
||
" r2_scores = cross_val_score(pipeline, X_reg, y_reg, cv=5, scoring='r2')\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"MAE (Cross-Validation): Mean = {mae_scores.mean()}, Std = {mae_scores.std()}\")\n",
|
||
" print(f\"R² (Cross-Validation): Mean = {r2_scores.mean()}, Std = {r2_scores.std()}\")\n",
|
||
" print()\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df[numerical_cols]\n",
|
||
"y_class = (df['Volume'] > df['Volume'].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Список моделей для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": LogisticRegression(),\n",
|
||
" \"Random Forest Classification\": RandomForestClassifier(),\n",
|
||
" \"Gradient Boosting Classification\": GradientBoostingClassifier()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Оценка смещения и дисперсии для задачи классификации\n",
|
||
"print(\"Оценка смещения и дисперсии для задачи классификации:\")\n",
|
||
"for name, model in models_class.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" accuracy_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='accuracy')\n",
|
||
" precision_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='precision')\n",
|
||
" recall_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='recall')\n",
|
||
" f1_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='f1')\n",
|
||
" print(f\"Model: {name}\")\n",
|
||
" print(f\"Accuracy (Cross-Validation): Mean = {accuracy_scores.mean()}, Std = {accuracy_scores.std()}\")\n",
|
||
" print(f\"Precision (Cross-Validation): Mean = {precision_scores.mean()}, Std = {precision_scores.std()}\")\n",
|
||
" print(f\"Recall (Cross-Validation): Mean = {recall_scores.mean()}, Std = {recall_scores.std()}\")\n",
|
||
" print(f\"F1-score (Cross-Validation): Mean = {f1_scores.mean()}, Std = {f1_scores.std()}\")\n",
|
||
" print()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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9OrVS6dOndLKlSvtw5KTk7V48WL17t0722nS09M1ZcoU3XrrrfLy8lJQUJAGDRqk06dPO4z3+eefq3PnzqpYsaJsNpuqV6+uF1980eELU7p8ZE7dunX1+++/q23btvLx8VGlSpX02muv5Xk9Ll68qM8++0z333+/evTooYsXL+rzzz/Pcfz9+/crKipKvr6+qlixol544YUsIcCHH36oRo0aqVSpUvL391e9evX073//O8t87rvvPgUEBMjHx0fNmjXT119/fdV6czonOfP52QcOHFBgYKAkKTY21n54a+bz/Xft2qXu3bsrICBAXl5eaty4cYF3CDPeny1btujOO++Uj4+Pnn32Wfsht6+//rqmTJmi6tWry2az6ffff5d0+YicO+64Q76+vipTpozuueceh0O6pf8dNv3777+rd+/eKlu2bJaj6TK7dOmSli1bluNpcF5eXvrnP/+pBQsWOAxfuHChypYtq6ioqBznPX/+fNWpU0dt27ZVRESE5s+fn9dNlKP27dvr4MGD2r59e47jZFzXJi4uTl9//bX9fT5w4ICkyx3BAQMGKCgoSF5eXmrQoIHee+89h3lc7b3Iq8DAQNWqVUv79u1zGJ7Xz3x6errGjRunihUrysfHR23bttXvv/+e5Tz6jNMyvvvuOw0ePFgVKlRQ5cqV7a9/88039rZTqlQpde7cWb/99pvDso4ePar+/furcuXKstlsCgkJ0T333GPfbpK0efNmRUVFqXz58vL29la1atX08MMPO8wnu2tobNu2TR07dpS/v7/8/PzUrl07/fDDDw7jZKzDhg0bFB0drcDAQPn6+uof//iHTpw4kddNrt69e2v79u3atWuXw7p9++23Oe6D89ImJOnMmTPq16+fSpcurTJlyqhv3745no5wrfuSPXv26N5771VwcLC8vLxUuXJl3X///Tp79mzeNgCAYueOO+6QpCzfBdnJy77YGKPx48ercuXK9u+G3377Lct3Q0af4EoZ+9vM88xvH/PKPowkJSUlKSYmRjVq1JDNZlNoaKhGjRqV5VpGSUlJGjlypAIDA1WqVCl17dpVf/7551W3TYYlS5borrvuuuqRRdLlfsztt9+uc+fO2YOgzFavXq133nnH4ZR8SWrUqJECAgJy7ftKl0+PzzhSOjAwMMt34FtvvaVbb71VNptNFStW1JAhQ7J8b+S2TfMjp3b23//+Vx06dFDp0qXl4+Oj1q1ba8OGDVmmX7t2rRo3biwvLy9Vr15ds2bNyrYNZZxqPn/+fPu6LVu2TJJ05MgRPfzwwwoKCpLNZtOtt96qOXPmZFnW1KlTdeutt8rHx0dly5ZV48aNHfqa586d04gRIxQWFiabzaYKFSqoffv22rp1q32c7K7BlJiYqCeffFKhoaGy2WyqWbOmXn/99Sx/k2Ssw5IlS1S3bl17rRnrkRfNmzdXtWrVsvSR58+frw4dOiggICDb6fLSJiRp9uzZql69ury9vdWkSRN9//332c4vr5+7K6WkpCg2NlY333yzvLy8VK5cObVq1crhb1iUTJwid50JCwtT8+bNtXDhQvspZd98843Onj2r+++/X2+++WaWaQYNGqR58+apf//+Gj58uOLi4jRt2jRt27ZNGzZskIeHh6TLHQI/Pz9FR0fLz89P3377rcaOHauEhARNnDjRYZ6nT59Whw4d9M9//lM9evTQ4sWL9cwzz6hevXp5OtXtiy++0Pnz53X//fcrODhYbdq00fz587P9Ay0tLU0dOnRQs2bN9Nprr2nZsmWKiYlRamqq/VSmlStXqlevXmrXrp1effVVSdLOnTu1YcMGPfHEE5KkY8eOqUWLFrpw4YKGDx+ucuXK6b333lPXrl21ePFi/eMf/8jHO5FVYGCgZsyYoccff1z/+Mc/9M9//lOSVL9+fUnSb7/9Zj+SZ/To0fL19dVHH32kbt266ZNPPsnT8i9duqSTJ09mGe7v7y9PT0/781OnTqljx466//779eCDDyooKMj+2ty5c3Xp0iU9+uijstlsCggI0KpVq9SxY0fddNNNGjdunC5evKipU6eqZcuW2rp1a5Yv2Pvuu08333yzXn755VyP9tmyZYuSk5N122235ThO7969FRkZqX379ql69eqSLh8N0r17d3vbvFJSUpI++eQT++livXr1Uv/+/bM91U66/EtddtutTJkyDkfDNGrUSJK0YcMGh9PnMqtdu7bef/99jRw5UpUrV7bXEBgYqIsXL6pNmzbau3evhg4dqmrVqunjjz9Wv379dObMGXtbzJDde5Efqamp+vPPP1W2bFmH4Xn9zI8ZM0avvfaaunTpoqioKO3YsUNRUVE5/lI4ePBgBQYGauzYsfYjmN5//3317dtXUVFRevXVV3XhwgXNmDFDrVq10rZt2+xt595779Vvv/2mYcOGKSwsTMePH9fKlSt16NAh+/PIyEgFBgZq9OjRKlOmjA4cOHDVU89+++033XHHHfL399eoUaPk4eGhWbNmqU2bNvruu+/UtGlTh/GHDRumsmXLKiYmRgcOHNCUKVM0dOjQLEfR5eTOO+9U5cqVtWDBAvv+Z9GiRfLz88v2CKa8tgljjO655x6tX79ejz32mGrXrq3PPvtMffv2zXadr2VfkpycrKioKCUlJWnYsGEKDg7WkSNH9NVXX+nMmTMqXbp0nrYBgOIlI8i58rsgO1fbF0vS2LFjNX78eHXq1EmdOnXS1q1bFRkZaemI5/z0MbPrw6Snp6tr165av369Hn30UdWuXVu//PKLJk+erD/++ENLliyxT//II4/ogw8+UO/evdWiRQt9++23eT7C9MiRIzp06FCu/ZYrZfxodOURRj/99JN69OihuXPn6vbbb88y3W233ZZtEJPZlClT9J///EefffaZ/ZS1jH7luHHjFBsbq4iICD3++OPavXu3ZsyYoZ9++snhu17KvV+Yn/WUHNvZt99+q44dO6pRo0aKiYmRq6ur5s6dq7vuukvff/+9/Qj7bdu2qUOHDgoJCVFsbKzS0tL0wgsv2H+YvdK3336rjz76SEOHDlX58uUVFhamY8eOqVmzZvbwJjAwUN98840GDBighIQE+81W3n77bQ0fPlzdu3fXE088oUuXLunnn3/Wf//7X/vfGY899pgWL16soUOHqk6dOjp16pTWr1+vnTt35vjeG2PUtWtXrVmzRgMGDFB4eLiWL1+up59+WkeOHMlyNPn69ev16aefavDgwSpVqpTefPNN3XvvvTp06JDKlSuXp23eq1cvffDBB3rllVfk4uKikydPasWKFXr//fezDavy2ibeffddDRo0SC1atNCIESO0f/9+de3aVQEBAQoNDbXPLz+fu+xqmTBhgh555BE1adJECQkJ2rx5s7Zu3crRVyWdwXVh7ty5RpL56aefzLRp00ypUqXMhQsXjDHG3HfffaZt27bGGGOqVq1qOnfubJ/u+++/N5LM/PnzHea3bNmyLMMz5pfZoEGDjI+Pj7l06ZJ9WOvWrY0k85///Mc+LCkpyQQHB5t77703T+tz9913m5YtW9qfz54927i7u5vjx487jNe3b18jyQwbNsw+LD093XTu3Nl4enqaEydOGGOMeeKJJ4y/v79JTU3NcZkjRowwksz3339vH3bu3DlTrVo1ExYWZtLS0owxxsTFxRlJZu7cuQ7r3Lp16yzz7Nu3r6latar9+YkTJ4wkExMTk2Xcdu3amXr16jlsy/T0dNOiRQtz880351h3Bkk5/lu4cKFDrZLMzJkzHabPWC9/f/8s2zk8PNxUqFDBnDp1yj5sx44dxtXV1fTp08c+LCYmxkgyvXr1umq9xhjzzjvvGEnml19+yfJaRltNTU01wcHB5sUXXzTGGPP7778bSea7775zaPeZLV682Egye/bsMcYYk5CQYLy8vMzkyZOzXeec/m3atClLXZ6enubxxx+/6rpd+VkzxpgpU6YYSeaDDz6wD0tOTjbNmzc3fn5+JiEhwaGu7N6L3JYXGRlpTpw4YU6cOGF++eUX89BDDxlJZsiQIfbx8vqZP3r0qHF3dzfdunVzGG/cuHFGkunbt699WMb70KpVK4fP2Llz50yZMmXMwIEDHeZx9OhRU7p0afvw06dPG0lm4sSJOa7fZ599lu17faUrP1/dunUznp6eZt++ffZhf/31lylVqpS58847s6xDRESESU9Ptw8fOXKkcXNzM2fOnMl1uRlt/8SJE+app54yNWrUsL92++23m/79+9vry/x+5LVNLFmyxEgyr732mn281NRUc8cdd2TZH+V1X7JmzRojyaxZs8YYY8y2bduMJPPxxx/nuq4AiqeM/diqVavMiRMnzOHDh83ixYtNYGCgsdls5vDhw7lOn5d98fHjx42np6fp3Lmzw77y2WefzfLdkLFfzKnOuLg4+7D89jGv7MO8//77xtXV1aEPZ4wxM2fONJLMhg0bjDHGbN++3UgygwcPdhivd+/eOfbPMlu1apWRZL788sssr7Vu3drUqlXL/j28a9cu8/TTTxtJWfoDP/74owkODjafffZZjst69NFHjbe3d671GOP4/ZMh432KjIy091+NMWbatGlGkpkzZ45D3dlt06stb/fu3ebEiRPmwIEDZs6cOcbb29sEBgaaxMREY8zl752bb77ZREVFObSVCxcumGrVqpn27dvbh3Xp0sX4+PiYI0eO2Ift2bPHuLu7Z2lDkoyrq6v57bffHIYPGDDAhISEmJMnTzoMv//++03p0qXtbeyee+4xt956a67rWLp0aYfv6uxc2cfP+J4eP368w3jdu3c3Li4uZu/evQ7r4Onp6TBsx44dRpKZOnVqrsvN6CNOnDjR/Prrrw5/u0yfPt34+fmZxMRE07dvX+Pr62ufLq9tIjk52VSoUMGEh4ebpKQk+3izZ882khz+3snr586Yy/3UzPuHBg0aZPlc4MbAKXLXoYxTyr766iudO3dOX331VY6nZnz88ccqXbq02rdvr5MnT9r/NWrUSH5+fg7nfnt7e9sfnzt3TidPntQdd9yhCxcuOJwOIkl+fn568MEH7c89PT3VpEkT7d+//6r1nzp1SsuXL1evXr3sw+699165uLjoo48+ynaazHdlyvjlIjk5WatWrZJ0+UiUxMTEXA+7XLp0qZo0aeJwSpefn58effRRHThwIN+nJ+XH33//rW+//VY9evSwb9uTJ0/q1KlTioqK0p49e/J0B5h77rlHK1euzPKvbdu2DuPZbDb1798/23nce++9Dr8YxcfHa/v27erXr5/DETT169dX+/bttXTp0izzyOtd606dOiUp919V3dzc1KNHD/t1bebPn6/Q0FD7odjZmT9/vho3bmy/2GXGaVk5nSb36KOPZrvd6tSpk2XcsmXLZnu0U14sXbpUwcHBDm3bw8NDw4cP1/nz5/Xdd985jH/le3E1K1asUGBgoAIDA1WvXj29//776t+/v8Ovv3n9zK9evVqpqakaPHiwwzKGDRuW4/IHDhwoNzc3+/OVK1fqzJkz6tWrl8Oy3Nzc1LRpU/uyvL295enpqbVr12Y5TS9Dxi+/X331lVJSUvK0PdLS0rRixQp169ZNN910k314SEiIevfurfXr1yshIcFhmkcffdThcPw77rhDaWlp+boVde/evbV371799NNP9v9z2gfntU0sXbpU7u7uevzxx+3jubm5ZXk/rOxLMo5QWr58eZFf0wRAwYmIiFBgYKBCQ0PVvXt3+fr66osvvnA4dTk7edkXr1q1SsnJyVkuPp1xdMi1yk8fM7s+zMcff6zatWurVq1aDt83d911lyTZv28y+izDhw93mD6v9V+t37Jr1y7793CtWrU0ceJEde3aVfPmzXMYr1u3bnJxcdGUKVPUpk0b3XPPPVnmVbZsWV28ePGa9scZ79OIESMcru80cOBA+fv7Z7n8Q279wpzUrFlTgYGBCgsL08MPP6waNWrom2++kY+Pj6TLF0Pfs2ePevfurVOnTtnfk8TERLVr107r1q1Tenq60tLStGrVKnXr1k0VK1a0z79GjRo5nvXQunVrhz6aMUaffPKJunTpImOMQxuIiorS2bNn7ae3lSlTRn/++ad++umnHNetTJky+u9//6u//vorz9tj6dKlcnNzy9K2nnzySRljstwROyIiwn5kvnS5X+3v75+nv5Uy3Hrrrapfv769j7xgwQLdc8899vcgs7y2ic2bN+v48eN67LHHHM5+yDhFP7O8fu6yU6ZMGf3222/as2dPntcXJcMNfYrcunXrNHHiRG3ZskXx8fH67LPP1K1btzxPn3EY4pV8fHwK9QK4gYGBioiI0IIFC3ThwgWlpaWpe/fu2Y67Z88enT17VhUqVMj29czni//222967rnn9O2332b5o+zK63NUrlw5yznTZcuW1c8//3zV+hctWqSUlBQ1bNhQe/futQ9v2rSp5s+fryFDhjiM7+rq6vDHo/S/iydmHK47ePBgffTRR+rYsaMqVaqkyMhI9ejRQx06dLBPc/DgwSyny0iXT3nKeL1u3bpXrf9a7N27V8YYPf/883r++eezHef48ePZXgg7s8qVK+d4PaPMKlWq5PClkVm1atUcnmf8YV2zZs0s49auXVvLly9XYmKifH19c5zH1ZirXDS7d+/eevPNN7Vjxw4tWLBA999/f47XPjhz5oyWLl2qoUOHOrSfli1b6pNPPtEff/yR5a56N998c562W0atebnuQnYOHjyom2++OcvFPDO3sczyux2bNm2q8ePHKy0tTb/++qvGjx+v06dPO7zXef3MZ9Ry5R1pAgICcuxYX1lvRqcho6NxJX9/f0mXO7avvvqqnnzySQUFBalZs2a6++671adPH/spja1bt9a9996r2NhYTZ48WW3atFG3bt3Uu3fvHC+yeeLECV24cCHHtpuenq7Dhw87XMy9SpUqDuNlrGtOf2xlp2HDhqpVq5YWLFigMmXKKDg4OMdtkNc2cfDgQYWEhGS55fCV62ZlX1KtWjVFR0dr0qRJmj9/vu644w517dpVDz74IKfHAdeR6dOn65ZbbtHZs2c1Z84crVu3zmE/mZycrL///tthmsDAwDztizP2STfffHOW6fNyCl5O8tPHzK4Ps2fPHu3cuTPHH2Uyf7e5uro6/GEvZd/HyU1O/ZawsDD73cX27dunl156SSdOnMhyR6+8/GiYsYxr6XPk1Hfz9PTUTTfdlKW/kVu/MCeffPKJ/P39deLECb355puKi4tzCAoz+gDZncqd4ezZs7p06ZIuXryY7R3wcror3pX9jRMnTujMmTOaPXu2Zs+ene00GW3gmWee0apVq9SkSRPVqFFDkZGR6t27t1q2bGkf97XXXlPfvn0VGhqqRo0aqVOnTurTp0+WvzcyO3jwoCpWrJjljsU59fGu7G9Il/sc+elvSJf7yG+88YZGjhypjRs35nj9rLy2iZw+4x4eHlnWP6+fu+y88MILuueee3TLLbeobt266tChgx566CH7KZ4ouW7ogCkxMVENGjTQww8/bL9eTn489dRTWY7kaNeuXbbnWRe03r17a+DAgTp69Kg6duyY450l0tPTVaFChRyP7MjYYZw5c0atW7eWv7+/XnjhBVWvXl1eXl7aunWrnnnmmSy36cx8FENmVwsSJNlrybyjz2z//v257uCzU6FCBW3fvl3Lly/XN998o2+++UZz585Vnz59sr2Ybn65uLhku25XXpwyJxnb76mnnsrxwtUFeevZzB2A/LxWEPPPLOMc89OnT+f6y2rTpk1VvXp1jRgxQnFxcTkeDSJd/jUlKSlJb7zxht54440sr8+fPz/b4Devzpw5o/Lly1/z9PmR3/eifPny9qAsKipKtWrV0t13361///vfio6OlpT3z3xB1JvRrt9///1sr32V+fpWI0aMUJcuXbRkyRItX75czz//vCZMmKBvv/1WDRs2lIuLixYvXqwffvhBX375pZYvX66HH35Yb7zxhn744Ycswcu1srLvyqx3796aMWOGSpUqpZ49e2YJkAqL1X3JG2+8oX79+unzzz/XihUrNHz4cE2YMEE//PDDVY9+AFA8NGnSRI0bN5Z0+UiZVq1aqXfv3tq9e7f8/Py0cePGLEc2x8XFKSws7Kr74vzIKRi5sm+U3z5mdt+N6enpqlevniZNmpTtMjNfN8aKzP2W7Pj6+jr8YNWyZUvddtttevbZZ7O9DmpuTp8+LR8fnwLpl13NtSzjzjvvtPeHunTponr16umBBx7Qli1b5Orqan/fJk6cqPDw8Gzn4efnd013gMupv/Hggw/mGGhlBBe1a9fW7t279dVXX2nZsmX65JNP9NZbb2ns2LH2/mGPHj10xx136LPPPtOKFSs0ceJEvfrqq/r000/zdC3ZvCio/kavXr00ZswYDRw4UOXKlVNkZGRBlJcnVj53d955p/bt22fvb7zzzjuaPHmyZs6cqUceeaSwSkYxcEMHTB07dsx1J5KUlKR//etfWrhwoc6cOaO6devq1Vdftd9NzM/Pz+GPnh07duj333/XzJkzC7t0/eMf/9CgQYP0ww8/5Hpx2urVq2vVqlVq2bJlrl8ua9eu1alTp/Tpp5/qzjvvtA+Pi4sr0Lrj4uK0ceNGDR06VK1bt3Z4LT09XQ899JAWLFig5557zmH4/v37HY5K+eOPPyTJ4eLTnp6e6tKli7p06aL09HQNHjxYs2bN0vPPP68aNWqoatWq2r17d5aaMg7Nrlq1ao51ly1bNttDWq/8tSKnzlZGYObh4ZHnI2mKSsZ657Rtypcv73D0Un7UqlVL0uX3vV69ermO26tXL40fP161a9fOsaMiXQ6Q6tata7+rSmazZs3SggULrjlgOnLkiJKTk+2/RuVX1apV9fPPPys9Pd0hcMhLG7sWnTt3VuvWrfXyyy9r0KBB8vX1zfNnPqOWvXv3OvxSeOrUqTz/upbxC3GFChXy1K6rV6+uJ598Uk8++aT27Nmj8PBwvfHGG/rggw/s4zRr1kzNmjXTSy+9pAULFuiBBx7Qhx9+mG1nJDAwUD4+Pjm2XVdX1wL7o+NKvXv31tixYxUfH6/3338/x/Hy2iaqVq2q1atX6/z58w7fK1euW0HsS+rVq6d69erpueee08aNG9WyZUvNnDlT48ePv6b5AXAeNzc3TZgwQW3bttW0adM0evRoNWjQIMslAzL/CJDbvjhjn7Rnzx6HH/tOnDiR5bsh44imM2fOOPzQeWXfqCD6mNWrV9eOHTvUrl27XI/4qVq1qv3oosxHcmT3PZGdzP2WvKhfv74efPBBzZo1S0899VS2R63kJC4uzlJ/Q7q8Xpnfp+TkZMXFxRV4X9PPz08xMTHq37+/PvroI91///32PoC/v3+uy6tQoYK8vLwcjjrPkN2w7GTcETAtLS1P6+br66uePXuqZ8+eSk5O1j//+U+99NJLGjNmjP1os5CQEA0ePFiDBw/W8ePHddttt+mll17K8W/DqlWratWqVTp37pzDUUyF1cfLUKVKFbVs2VJr167V448/7vDj3ZX1SVdvE5k/45mPvk5JSVFcXJwaNGhgH5bXz11OAgIC1L9/f/Xv31/nz5/XnXfeqXHjxhEwlXBcgykXQ4cO1aZNm/Thhx/q559/1n333acOHTrkeC7pO++8o1tuuSXXa8cUFD8/P82YMUPjxo1Tly5dchyvR48eSktL04svvpjltdTUVPttKzNS9sypenJyst56660CrTvjqIpRo0ape/fuDv969Oih1q1bZ3vkxbRp0+yPjTGaNm2aPDw81K5dO0n/O2c+g6urq/2XjIzbaHbq1Ek//vijNm3aZB8vMTFRs2fPVlhYWLbX48lQvXp17dq1y+F25jt27Mhy94+Mc6KvvB1ohQoV1KZNG82aNUvx8fFZ5p+f26QXtJCQEIWHh+u9995zqPvXX3/VihUr1KlTp2ued6NGjeTp6anNmzdfddxHHnlEMTEx2R6VlOHw4cNat26devTokaX9dO/eXf3799fevXv13//+95rq3bJliySpRYsW1zR9p06ddPToUYfQNzU1VVOnTpWfn1+WULUgPPPMMzp16pTefvttSXn/zLdr107u7u6aMWOGwziZP2tXExUVJX9/f7388svZXjcpo11fuHAhyy+Y1atXV6lSpeyfz9OnT2f5VS8jaMzpVrhubm6KjIzU559/7nA77GPHjmnBggVq1aqV/TS9gla9enVNmTJFEyZMsN8lJzt5bROdOnVSamqqw/uRlpamqVOnOszPyr4kISFBqampDsPq1asnV1fXq95uGEDx1aZNGzVp0kRTpkzRpUuXVLZsWUVERDj88/LyytO+OCIiQh4eHpo6darDPnnKlClZlpsRMKxbt84+LDExMcuR4wXRx+zRo4eOHDli/67L7OLFi/ZLU2SEA1ceTZRd/dmpVKmSQkND89RvyTBq1CilpKTkeJRHTrZu3XrN/Y2IiAh5enrqzTffdNiu7777rs6ePZvnu+blxwMPPKDKlSvb79bcqFEjVa9eXa+//rrOnz+fZfyM7yM3NzdFRERoyZIlDtc82rt3b5brFuXEzc1N9957rz755BP9+uuvOS5Lyvo3gaenp+rUqSNjjFJSUpSWlpbltMwKFSqoYsWKuX4XdurUSWlpaVn6SZMnT5aLi0uBHfmUnfHjxysmJibX62TmtU00btxYgYGBmjlzpsOdIefNm5fl75e8fu6yc+X74Ofnpxo1atDfuAHc0Ecw5ebQoUOaO3euDh06ZL8g3VNPPaVly5Zp7ty5evnllx3Gv3TpkubPn6/Ro0cXWY25nfOcoXXr1ho0aJAmTJig7du3KzIyUh4eHtqzZ48+/vhj/fvf/1b37t3VokULlS1bVn379tXw4cPl4uKi999/P9+HcV7N/PnzFR4enuNRBV27dtWwYcO0detW+21Cvby8tGzZMvXt21dNmzbVN998o6+//lrPPvus/XSfRx55RH///bfuuusuVa5cWQcPHtTUqVMVHh5u/3Vo9OjRWrhwoTp27Kjhw4crICBA7733nuLi4vTJJ5/keorLww8/rEmTJikqKkoDBgzQ8ePHNXPmTN16660O1xLw9vZWnTp1tGjRIt1yyy0KCAhQ3bp1VbduXU2fPl2tWrVSvXr1NHDgQN100006duyYNm3apD///FM7duy46vb7448/HI72yBAUFGTplp8TJ05Ux44d1bx5cw0YMEAXL17U1KlTVbp0aY0bN+6a5+vl5aXIyEitWrXKfkv3nFStWvWqy1qwYIH9NrHZ6dSpk9zd3TV//nyH621t3bo12+1WvXp1NW/e3P585cqVqlKlSr5PE8jw6KOPatasWerXr5+2bNmisLAwLV68WBs2bNCUKVOynLdfEDp27Ki6detq0qRJGjJkSJ4/80FBQXriiSf0xhtvqGvXrurQoYN27Nihb775RuXLl8/TL1X+/v6aMWOGHnroId122226//77FRgYqEOHDunrr79Wy5YtNW3aNP3xxx9q166devTooTp16sjd3V2fffaZjh07pvvvv1+S9N577+mtt97SP/7xD1WvXl3nzp3T22+/LX9//1xDzvHjx2vlypVq1aqVBg8eLHd3d82aNUtJSUl67bXXCmw7Z+eJJ5646jh5bRNdunRRy5YtNXr0aB04cEB16tTRp59+mqUTLOma9yXffvuthg4dqvvuu0+33HKLUlNT9f7779s77gCuX08//bTuu+8+zZs3L8cbceRlXxwYGKinnnpKEyZM0N13361OnTpp27Zt9u+GzCIjI1WlShUNGDBATz/9tNzc3DRnzhz790CGguhjPvTQQ/roo4/02GOPac2aNWrZsqXS0tK0a9cuffTRR1q+fLkaN26s8PBw9erVS2+99ZbOnj2rFi1aaPXq1Xk+Uka6fEOVzz77LM/XZKxTp446deqkd955R88//3yebkG/ZcsW/f3339le/DsvAgMDNWbMGMXGxqpDhw7q2rWrdu/erbfeeku33367w414CoqHh4eeeOIJPf3001q2bJk6dOigd955Rx07dtStt96q/v37q1KlSjpy5IjWrFkjf39/ffnll5IuX7d2xYoVatmypR5//HF7UFO3bl1t3749T8t/5ZVXtGbNGjVt2lQDBw5UnTp19Pfff2vr1q1atWqV/bpjkZGRCg4OVsuWLRUUFKSdO3dq2rRp6ty5s0qVKqUzZ86ocuXK6t69uxo0aCA/Pz+tWrVKP/30U64/cnbp0kVt27bVv/71Lx04cEANGjTQihUr9Pnnn2vEiBFZrvtVkFq3bn3VHynz2iY8PDw0fvx4DRo0SHfddZd69uypuLg4zZ07N8slSvL6uctOnTp11KZNGzVq1EgBAQHavHmzFi9e7HDjJpRQRXa/umJOksOtRL/66isjyfj6+jr8c3d3Nz169Mgy/YIFC4y7u7s5evRoodSX0+3ar5TdrdONuXzryUaNGhlvb29TqlQpU69ePTNq1Cjz119/2cfZsGGDadasmfH29jYVK1Y0o0aNMsuXL3e4zbUxl293mt3tP6+8neeVtmzZYiSZ559/PsdxDhw4YCSZkSNH2ufp6+tr9u3bZyIjI42Pj48JCgoyMTExDrfgXLx4sYmMjDQVKlQwnp6epkqVKmbQoEEmPj7eYf779u0z3bt3N2XKlDFeXl6mSZMm5quvvnIYJ+P2oJlvC26MMR988IG56aabjKenpwkPDzfLly/Pdp03btxoGjVqZDw9PbPcEnffvn2mT58+Jjg42Hh4eJhKlSqZu+++2yxevDjHbZJBUo7/Mt9SNKf3J/NtT7OzatUq07JlS+Pt7W38/f1Nly5dzO+//+4wTna3yr2aTz/91Li4uJhDhw45DM+prWZ2ZbuvV6+eqVKlSq7TtGnTxlSoUMGkpKTY1zmnf5lvp5qWlmZCQkLMc889l6f1yqn+Y8eOmf79+5vy5csbT09PU69evSxt6WrvRX6WZ4wx8+bNy9Jm8/KZT01NNc8//7wJDg423t7e5q677jI7d+405cqVM4899ph9vKvtf9asWWOioqJM6dKljZeXl6levbrp16+f2bx5szHGmJMnT5ohQ4aYWrVqGV9fX1O6dGnTtGlT89FHH9nnsXXrVtOrVy9TpUoVY7PZTIUKFczdd99tn0eGKz9TGdNGRUUZPz8/4+PjY9q2bWs2btzoME5O67BmzZos+7js5LXtS8py6+O8tAljjDl16pR56KGHjL+/vyldurR56KGHzLZt27LdH+VlX3Lluu3fv988/PDDpnr16sbLy8sEBASYtm3bmlWrVuW6TgCKh9z2xWlpaaZ69eqmevXqJjU1Ndvp87IvzphXbGysCQkJMd7e3qZNmzbm119/zXIbcmMu9+2aNm1q73tNmjTJXmdcXJx9PKt9TGMu31791VdfNbfeequx2WymbNmyplGjRiY2NtacPXvWPt7FixfN8OHDTbly5Yyvr6/p0qWLOXz4cLbfH9nZunWrw63h81Lb2rVr8zx/Y4x55plnTJUqVUx6evpVx83t+2fatGmmVq1axsPDwwQFBZnHH3/cnD59Os9153d5Z8+eNaVLl3bod27bts3885//NOXKlTM2m81UrVrV9OjRw6xevdph2tWrV5uGDRsaT09PU716dfPOO++YJ5980nh5eTmMl933aIZjx46ZIUOGmNDQUOPh4WGCg4NNu3btzOzZs+3jzJo1y9x55532eqpXr26efvppextJSkoyTz/9tGnQoIEpVaqU8fX1NQ0aNDBvvfWWw7Ky6+OfO3fOjBw50lSsWNF4eHiYm2++2UycODHL+5jTOmT3GbpSXvuIGX8jXSkvbcIYY9566y1TrVo1Y7PZTOPGjc26detM69atHd5bY/L+ubty3caPH2+aNGliypQpY7y9vU2tWrXMSy+9ZJKTk3NdL1z/XIwp4ENUrlMuLi4Od5FbtGiRHnjgAf32229ZLtLm5+eX5YK27dq1k7+/vz777LOiKhm4LqSlpalOnTrq0aNHtqdtFRdLlixR7969tW/fPoWEhDi7HKc5c+aMypYtq/Hjx+tf//qXs8sBABQTYWFhatOmjebNm+fsUgpdu3btVLFixVyvsXetkpKSFBYWptGjR+fpSNiSrFu3btzKHihhuAZTDho2bKi0tDQdP35cNWrUcPh3ZbgUFxenNWvWaMCAAU6qFii+3Nzc9MILL2j69OnZnqNfXLz66qsaOnToDRUuXbx4McuwjOtUZNzMAACAG83LL7+sRYsWZblgeUGYO3euPDw8cjyVsaS6ss+xZ88eLV26lP4GUMLc0EcwnT9/3n5OdsOGDTVp0iS1bdtWAQEBqlKlih588EFt2LBBb7zxhho2bKgTJ05o9erVql+/vsPF855//nnNmTNHhw4dyvGWlABQ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/hEwAQAAAAAAwBICJgAAAAAAAFhCwAQAAAAAAABLCJgAAAAAAABgCQETAABACda1a1dVqVJFXl5eCgkJ0UMPPaS//vrL2WUBAIAShoAJAACgBGvbtq0++ugj7d69W5988on27dun7t27O7ssAABQwrg7uwAAAAAUnpEjR9ofV61aVaNHj1a3bt2UkpIiDw8PJ1YGAABKEgImAACAG8Tff/+t+fPnq0WLFrmGS0lJSUpKSrI/T0hIkCSlpKQoJSWl0Ou8UWTelmxbAEBhKarvFwImAACAEu6ZZ57RtGnTdOHCBTVr1kxfffVVruNPmDBBsbGxWYavWLFCPj4+hVXmDefSpUv2x8uXL5eXl5cTqwEAlFQXLlwokuUQMAEAAFxnRo8erVdffTXXcXbu3KlatWpJkp5++mkNGDBABw8eVGxsrPr06aOvvvpKLi4u2U47ZswYRUdH258nJCQoNDRUkZGR8vf3L7gVucElJibaH0dFRcnX19eJ1QAASqqMI5ELGwETAADAdebJJ59Uv379ch3npptusj8uX768ypcvr1tuuUW1a9dWaGiofvjhBzVv3jzbaW02m2w2W5bhHh4eXLepAGXelmxbAEBhKarvFwImAACA60xgYKACAwOvadr09HRJcrjGEgAAgFUETAAAACXUf//7X/30009q1aqVypYtq3379un5559X9erVczx6CQAA4Fq4OrsAAAAAFA4fHx99+umnateunWrWrKkBAwaofv36+u6777I9BQ4AAOBacQQTAABACVWvXj19++23zi4DAADcADiCCQAAAAAAAJYQMAEAAAAAAMASAiYAAAAAAABYQsAEAAAAAAAASwiYAAAAAAAAYAkBEwAAAAAAACwhYAIAAAAAAIAlBEwAAAAAAACwhIAJAAAAAAAAlhAwAQAAAAAAwBICJgAAAAAAAFhCwAQAAAAAAABLCJgAAAAAAABgCQETAAAAAAAALCFgAgAAAAAAgCUETAAAAAAAALCEgAkAAAAAAACWEDABAAAAAADAEgImAAAAAAAAWELABAAAAAAAAEsImAAAAAAAAGAJARMAAAAAAAAsIWACAAAAAACAJQRMAAAAAAAAsISACQAAAAAAAJYQMAEAAAAAAMASAiYAAAAAAABYQsAEAAAAAAAASwiYAAAAAAAAYAkBEwAAAAAAACwhYAIAAAAAAIAlBEwA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qV27tundu7cxxlh6r86dO2cGDRpkatSoYdLS0owxeWv3V9sXTJw40YSGhpp169aZAwcOmO+//94sWLDAGGPM8ePHjSQzd+5cEx8fb44fP26Mybq/6du3r/H39zePPfaY2blzp/nyyy+Nj4+PmT17tn2ciIgIEx4ebn744QezZcsW07p1a+Pt7W0mT56c7fpnt5y4uDhz6623mqCgIPuwDz74wISEhJhPPvnE7N+/33zyyScmICDAzJs3zxhjzNmzZ01AQIB58MEHzW+//WaWLl1qbrnlFiPJbNu2zRiT83fI1T4LObXJq21XY8w17b+uto1RvNF/ov+Ugf5TVvSfThtj6D/Rf6L/VBz7TwRMhexaOkjvvPOO/fXffvvNSDI7d+40xhgzYMAA8+ijjzrM4/vvvzeurq7m4sWL2S7jp59+MpLMuXPnjDH/a9xLliy5av2SjJeXl/H19TWurq5GkgkLC7N3qN5//31Ts2ZNk56ebp8mKSnJeHt7m+XLlxtjjAkKCjITJ060v56ammqqVKmSpYPUsGFDh2W/+OKLJjIy0mHY4cOHjSSze/dus2XLFiPJHDhwIEvdp06dMpLsH8wrXbkjqVixonnppZccxrn99tvN4MGDjTF5e2+upm/fvsbNzc34+voam81mJBlXV1ezePHiXKfr3LmzefLJJ+3PW7dubVq1apWl1meeecYYY8zy5cuNu7u7OXLkiP31b775xqGtzZ4925QtW9acP3/ePs7XX39tXF1dzdGjR+31Vq1a1f7lYowxNWvWNHfccYf9eWpqqvH19TULFy7M03pn/Mv44n322WeztJ/p06cbPz8/+3ILum1k1JTb5zK72rN7zy5dumR8fHzMxo0bHaYbMGCA6dWrlzHGmGeeecbUrVvX4fV//etfWTpIksz27dvt4xw8eNC4ubk5vI/GGNOuXTszZswYY4wx9erVM4888oiRZD799FOH8Tw8PIy7u7vx9fU1o0aNsg+XZB5++GGHL7zs3oc777zTuLm52d8HT09PExYWZn89JSXFeHh4mJtvvtk+LHMHKS/1Z6z33r177a9Pnz7d4Qv9Wt4rX19fI8mEhISYLVu22MfJS7u/2r5g2LBh5q677nLYVpll/pxlyK6DVLVqVZOammofdt9995mePXsaY4zZuXOnkWR++ukn++t79uwxkq7aQXJ1dTW+vr7G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",
|
||
"text/plain": [
|
||
"<Figure size 1200x600 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
|
||
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
|
||
"c:\\Users\\ateks\\Courses\\Courses\\.venv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
|
||
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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y8fHR2FhYfrnP/+p1NRUh/nCwsL0wAMPaNOmTWrSpIl8fX1VrVo1ffDBB9d8D7KqVKmSWrdu7XDcpCufy/r166tevXo5Lrd48WJFRETIz89PZcuW1WOPPaYjR45km2/ZsmWqV6+efH19Va9evRzbuiRlZGQoLi5OdevWla+vr0JCQjR48GD99ddf192H67UDAChK2rZtK+lKR5507XzGme/ezz//XG3atFHx4sUVFBSkxo0bO3zX5nSNpoULFyoiIsK+TP369fXWW2/ZX88tL8vLb0zmfh05ckRdu3ZVYGCgypUrp+eee07p6enXPEbXygec/Q1es2aNGjVqJD8/P82YMSPXbb788ssqXbq0Zs+enWPHVmRkpB544IFcl//xxx/Vv39/VatWTb6+vipfvrwGDhyokydPOsx39uxZ/eMf/7DnLsHBwbrvvvv0ww8/2OfZt2+fHn74YZUvX16+vr6qXLmyHnnkEZ05c8Zh/zLzomvlnLldo+l67SUvuXT//v01bdo0SXI4TTRTTtdocib//eabbxQdHa1y5copICBADz30kL2glhd9+vTRjh07tGfPHvu0xMREffHFF7mOTDt27Jj+/ve/KyQkRL6+vgoPD9e8efOyzXf69Gn1799fJUqUUMmSJdWvXz+dPn06x3Xu2bNH3bt3V+nSpeXr66tGjRpp+fLl140/L+0AuB5OnUOBNX/+fHXr1k3e3t7q3bu33nvvPX333Xdq3LixfZ5z586pVatW2r17twYOHKiGDRvqxIkTWr58uf7880+VLVtW6enpeuCBBxQfH69HHnlEI0aM0NmzZ7Vu3Tr99NNPql69utOxXb58WZGRkWrZsqXeeOMN+xD0xYsX6/z58xoyZIjKlCmjrVu3aurUqfrzzz+1ePFi+/I//vijWrVqJS8vLz355JMKCwvTgQMH9H//93+aMGGC7r77boWGhmr+/Pl66KGHsh2X6tWrq1mzZjnG1q1bN5UsWVLPPPOMevfurY4dOyowMFCS9PPPP6tVq1YKCgrSCy+8IC8vL82YMUN33323vvzyy2zXwho6dKjKlSunMWPGXLOXM/NH6/HHH3f6WGZ666231KVLFz366KO6dOmSFi5cqB49emjFihX23p+ff/5ZDzzwgO644w6NHz9ePj4+2r9/v7755hv7embOnKmnn35a3bt314gRI3Tx4kX9+OOP2rJlS64/7h9++KHef/99bd26Vf/+978lSc2bN89x3ry0ueTkZP373/9W7969NWjQIJ09e1azZs1SZGSktm7dqgYNGqhcuXJ67733NGTIED300EPq1q2bJOmOO+7I9Rg98cQTmjdvnrp3765nn31WW7ZsUWxsrHbv3p2tULN//351795df//739WvXz/Nnj1b/fv3V0REhOrWrZun96RPnz4aMWKEzp07p8DAQF2+fFmLFy9WdHR0jqfNzZ07VwMGDFDjxo0VGxurpKQkvfXWW/rmm2+0fft2e2/n2rVr9fDDD6tOnTqKjY3VyZMnNWDAgByLmYMHD7av9+mnn9Zvv/2md955R9u3b9c333yT62izG2kHAFCYZXaulSlTxj4tt3wmr9+9c+fO1cCBA1W3bl2NGjVKJUuW1Pbt27V69epcv2vXrVun3r17695779XEiRMlSbt379Y333yjESNG5Bp/Xn9jJCk9PV2RkZFq2rSp3njjDa1fv16TJ09W9erVNWTIkFy3ca18wJnf4L1796p3794aPHiwBg0apFq1auW4vX379mnPnj0aOHCgihcvnmtc17Ju3TodPHhQAwYMUPny5fXzzz/r/fff188//6z//ve/9gLMU089pU8++URRUVGqU6eOTp48qU2bNmn37t1q2LChLl26pMjISKWmpmr48OEqX768jhw5ohUrVuj06dMqUaJEtm1fK+fMSV7aS15y6cGDB+vo0aNat26dPvzww+seI2fz3+HDh6tUqVKKiYnRoUOHFBcXp6ioKC1atChP70nr1q1VuXJlLViwQOPHj5ckLVq0SIGBgTmOaLpw4YLuvvtu7d+/X1FRUapataoWL16s/v376/Tp0/bPhTFGDz74oDZt2qSnnnpKt99+uz799FP169cvx31u0aKFKlWqpJEjRyogIED/+c9/1LVrVy1ZsiTb3xeZbqQdADkyQAH0/fffG0lm3bp1xhhjMjIyTOXKlc2IESMc5hszZoyRZJYuXZptHRkZGcYYY2bPnm0kmSlTpuQ6z4YNG4wks2HDBofXf/vtNyPJzJkzxz6tX79+RpIZOXJktvWdP38+27TY2Fhjs9nM77//bp/WunVrU7x4cYdpWeMxxphRo0YZHx8fc/r0afu0Y8eOmWLFipmYmJhs28kp7kmTJjlM79q1q/H29jYHDhywTzt69Kgp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NMuuy5PX9pKXXNoZN5L/Xp1DlSpVSpKcaj933nmnateurQULFmj+/PkqX768/TppV/v9999Vs2bNbBe/v/322+2vZ/5foUKFbKcnXr1v+/fvlzFGL7/8crbPcExMjCTlmkPldztA0cE1mlDgfPHFF0pISNDChQu1cOHCbK/Pnz9f7du3t3SbufW85XbRSB8fn2w/Bunp6brvvvt06tQpvfjii6pdu7YCAgJ05MgR9e/f3+lb+0pXRjWNGDFCf/75p1JTU/Xf//5X77zzjtPruVFZe5WupXbt2tq+fbv++OMPhYaGOr2dr7/+Wl26dFHr1q317rvvqkKFCvLy8tKcOXMcLhDp5+enr776Shs2bNDKlSu1evVqLVq0SG3bttXatWvl6emp22+/XXv37tWKFSu0evVqLVmyRO+++67GjBmjcePGOR3bjfjoo4/Uv39/de3aVc8//7yCg4Pl6emp2NhYe6J1o/I6Ci+3kWjGGKe216VLF/n4+Khfv35KTU1Vz549nVr+ZmRkZCg4ODjXGwFc/UdEVgWhHQCAOzVp0kSNGjW65jw55TM3892bF8HBwdqxY4fWrFmjzz//XJ9//rnmzJmjvn375njx4xuRl9HYNyKvv8HO5E+StGvXrhuOqWfPnvr222/1/PPPq0GDBgoMDFRGRobuv/9+h9yzZ8+eatWqlT799FOtXbtWkyZN0sSJE7V06VJ16NBBkjR58mT1799fn332mdauXaunn35asbGx+u9//3vNm8JYJT9y6RthVQ7Vp08fvffeeypevLh69erlsrsoZh6n5557LteRddfqtHZ3O0DhQKEJBc78+fMVHBxsv5tEVkuXLtWnn36q6dOny8/PT9WrV9dPP/10zfVVr15dW7ZsUVpaWq4XDs7sqbj6rg3ODJHdtWuXfv31V82bN099+/a1T796aHjmsN3rxS1JjzzyiKKjo/Xxxx/rwoUL8vLyUq9evfIcU1blypWTv7+/9u7dm+21PXv2yMPD44aKRJLUuXNnffzxx/roo480atQop5dfsmSJfH19tWbNGodbIM+ZMyfbvB4eHrr33nt17733asqUKXrttdc0evRobdiwQe3atZMkBQQEqFevXurVq5cuXbqkbt26acKECRo1alS24drOykub++STT1StWjUtXbrUISnN7EXK5Mypm1WqVFFGRob27dtn7+GSpKSkJJ0+fTrH09ms4Ofnp65du+qjjz5Shw4dVLZs2Vzjk65cAPXqHru9e/faX8/8f9++fdnWcXXbrF69utavX68WLVrkOWnPKj/bAQAUVnn97s28mcpPP/3k9Ehrb29vde7cWZ07d1ZGRoaGDh2qGTNm6OWXX85xXXn9jckv+fUbfNttt6lWrVr67LPP9NZbb13zQto5+euvvxQfH69x48ZpzJgx9uk5/cZKV04XGzp0qIYOHapjx46pYcOGmjBhgr3QJEn169dX/fr19dJLL+nbb79VixYtNH36dL366qs3tI+Z8tJe8ppLS3nPofIz/72ePn36aMyYMUpISLjmRcurVKmiH3/8URkZGQ7FqMy71mXNoeLj4+03acl09b5l/q3h5eVlz42dlV/tAEUHp86hQLlw4YKWLl2qBx54QN27d8/2LyoqSmfPnrXf5ezhhx/Wzp07c7w1emavw8MPP6wTJ07kOBIoc54qVarI09NTX331lcPr7777bp5jz+z9yNrbYYxxuF2vdOUHr3Xr1po9e7YOHz6cYzyZypYtqw4dOuijjz7S/Pnzdf/99+f6h35e4mvfvr0+++wzh1vNJiUlacGCBWrZsqV9CLezunfvrvr162vChAnavHlzttfPnj2r0aNHXzM2m83mMILs0KFDWrZsmcN8p06dyrZsgwYNJMl+e+Grb+fr7e2tOnXqyBijtLS0vO5SrvLS5nJqC1u2bMl2bDLv7pPbbWmz6tixoyQpLi7OYfqUKVMkKce7mFjlueeeU0xMjF5++eVc52nUqJGCg4M1ffp0h1s9f/7559q9e7c9vgoVKqhBgwaaN2+ewzDsdevW6ZdffnFYZ8+ePZWenq5XXnkl2/YuX758zeOW3+0AAAqrvH73tm/fXsWLF1dsbGy2O5Fea+TH1d/PHh4e9juuZv39yCqvvzH5JT9/g8eNG6eTJ0/qiSee0OXLl7O9vnbtWq1YsSLHZXPKN3KKMz09PdupT8HBwapYsaL9eCYnJ2fbfv369eXh4ZHr++KMvLSXvObS0pXOJOn6OVR+5r/XU716dcXFxSk2NlZNmjTJdb6OHTsqMTHR4a52ly9f1tSpUxUYGGg/dbBjx466fPmy3nvvPft86enpmjp1qsP6goODdffdd2vGjBlKSEjItr3jx4/nGkt+twMUHYxoQoGyfPlynT17Vl26dMnx9bvuukvlypXT/Pnz1atXLz3//PP65JNP1KNHDw0cOFARERE6deqUli9frunTpys8PFx9+/bVBx98oOjoaG3dulWtWrVSSkqK1q9fr6FDh+rBBx9UiRIl1KNHD02dOlU2m03Vq1fXihUrrnkNmKvVrl1b1atX13PPPacjR44oKChIS5YsyfF87rffflstW7ZUw4YN9eSTT6pq1ao6dOiQVq5cqR07djjM27dvX3Xv3l2Sckz6nPHqq69q3bp1atmypYYOHapixYppxowZSk1N1euvv37D6/Xy8tLSpUvVrl07tW7dWj179lSLFi3k5eWln3/+WQsWLFCpUqU0YcKEHJfv1KmTpkyZovvvv199+vTRsWPHNG3aNNWoUUM//vijfb7x48frq6++UqdOnVSlShUdO3ZM7777ripXrqyWLVtKupLIlC9fXi1atFBISIh2796td955R506dbrpC5ZLylObe+CBB7R06VI99NBD6tSpk3777TdNnz5dderU0blz5+zr8vPzU506dbRo0SLddtttKl26tOrVq5fj9QvCw8PVr18/vf/++zp9+rTatGmjrVu3at68eeratav9wvn5ITw8XOHh4decx8vLSxMnTtSAAQPUpk0b9e7d237r6bCwMD3zzDP2eWNjY9WpUye1bNlSAwcO1KlTpzR16lTVrVvX4fi0adNGgwcPVmxsrHbs2KH27dvLy8tL+/bt0+LFi/XWW2/ZPxtXy+92AACFVV6/e4OCgvTmm2/qiSeeUOPGjdWnTx+VKlVKO3fu1Pnz53M9De6JJ57QqVOn1LZtW1WuXFm///67pk6dqgYNGjiMFsrKmd+Y/JCfv8G9evXSrl27NGHCBG3fvl29e/dWlSpVdPLkSa1evVrx8fEOlxHIKigoSK1bt9brr7+utLQ0VapUSWvXrtVvv/3mMN/Zs2dVuXJlde/eXeHh4QoMDNT69ev13XffafLkyZKuXLoiKipKPXr00G233abLly/rww8/lKenpx5++OEb3r+ssV6vvTiTS0dEREiSnn76aUVGRsrT01OPPPJIjtvOr/w3L0aMGHHdeZ588knNmDFD/fv317Zt2xQWFqZPPvlE33zzjeLi4ux5S+fOndWiRQuNHDlShw4dUp06dbR06dIcr580bdo0tWzZUvXr19egQYNUrVo1JSUlafPmzfrzzz+1c+fOHGPJ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RzwAAACFVqlSpfTHH39IklavXq127dpJkowxdOQBAIBCwemLgb/zzjvav3+/KlasqCpVqiggIMDh9R9++MGy4ADkzZvrfnV3CG6ReuG8/fHU+H3y8fN3YzTu8cx9t7k7BABO6Natm/r06aOaNWvq5MmT6tChgyRp+/btqlGjhpujAwAAuHlOF5q6du2aD2EAAAAUfm+++abCwsL0xx9/6PXXX1dgYKAkKSEhQUOHDnVzdAAAADfP6UJTTExMfsQBAABQ6Hl5eem5557LNv2ZZ55xQzQAAADWc7rQBAAAgLxbvny5OnToIC8vLy1fvvya83bp0sVFUQEAAOQPpwtNHh4estlsub7OhSwBAAD+p2vXrkpMTFRwcPA1L0Fgs9nIowAAwC3P6ULTp59+6vA8LS1N27dv17x58zRu3DjLAgMAACgMMjIycnwMAABQGDldaHrwwQezTevevbvq1q2rRYsW6e9//7slgQEAAAAAUBgVxbtGc8foK4rCXaM9rFrRXXfdpfj4eKtWBwAAUOg8/fTTevvtt7NNf+edd/SPf/zD9QEBAABYzJJC04ULF/T222+rUqVKVqwOAACgUFqyZIlatGiRbXrz5s31ySefuCEiAAAAazl96lypUqUcLgZujNHZs2fl7++vjz76yNLgAAAACpOTJ0+qRIkS2aYHBQXpxIkTbogIAADAWk4Xmt58802HQpOHh4fKlSunpk2bqlSpUpYGBwAAUJjUqFFDq1evVlRUlMP0zz//XNWqVXNTVAAAANZxutDUv3//fAgDAACg8IuOjlZUVJSOHz+utm3bSpLi4+M1efJkxcXFuTc4AAAACzhdaJozZ44CAwPVo0cPh+mLFy/W+fPn1a9fP8uCAwAAKEwGDhyo1NRUTZgwQa+88ookKSwsTO+995769u3r5ugAAABuntOFptjYWM2YMSPb9ODgYD355JMUmgAAAK5hyJAhGjJkiI4fPy4/Pz8FBga6OyS3K4q3+Za41bdUNG7zDQBFjdN3nTt8+LCqVq2abXqVKlV0+PBhS4ICAAAorC5fvqz169dr6dKlMsZIko4ePapz5865OTIAAICb5/SIpuDgYP34448KCwtzmL5z506VKVPGqrgAAAAKnd9//13333+/Dh8+rNTUVN13330qXry4Jk6cqNTUVE2fPt3dIQIAANwUp0c09e7dW08//bQ2bNig9PR0paen64svvtCIESP0yCOP5EeMAAAAhcKIESPUqFEj/fXXX/Lz87NPf+ihhxQfH+/GyAAAAKzh9IimV155RYcOHdK9996rYsWuLJ6RkaG+ffvqtddeszxAAACAwuLrr7/Wt99+K29vb4fpYWFhOnLkiJuiAgAAsI7ThSZvb28tWrRIr776qnbs2CE/Pz/Vr19fVapUyY/4AAAACo2MjAylp6dnm/7nn3+qePHibogIAADAWk4XmjLVrFlTNWvWtDIWAACAQq19+/aKi4vT+++/L0my2Ww6d+6cYmJi1LFjRzdHBwAAcPOcvkbTww8/rIkTJ2ab/vrrr6tHjx6WBAUAAFAYvfHGG/rmm29Up04dXbx4UX369LGfNpdTfgUAAHCrcXpE01dffaWxY8dmm96hQwdNnjzZipgAAAAKpdDQUO3cuVOLFi3Szp07de7cOf3973/Xo48+6nBxcAAAgFuV04Wmc+fOZbuApSR5eXkpOTnZkqAAAAAKm7S0NNWuXVsrVqzQo48+qkcffdTdIQEAAFjO6VPn6tevr0WLFmWbvnDhQtWpU8eSoAAAAAobLy8vXbx40d1hAAAA5CunRzS9/PLL6tatmw4cOKC2bdtKkuLj47VgwQJ98sknlgcIAABQWAwbNkwTJ07Uv//9bxUrdsP3ZAEAACiwnM5wOnfurGXLlum1117TJ598Ij8/P4WHh+uLL75Q6dKl8yNGAACAQuG7775TfHy81q5dq/r16ysgIMDh9aVLl7opMgAAAGvcUFdap06d1KlTJ0lScnKyPv74Yz333HPatm2b0tPTLQ0QAACgsChZsqQefvhhd4cBAACQb254zPZXX32lWbNmacmSJapYsaK6deumadOmWRkbAABAoZCRkaFJkybp119/1aVLl9S2bVuNHTuWO80BAIBCx6lCU2JioubOnatZs2YpOTlZPXv2VGpqqpYtW8aFwAEAAHIxYcIEjR07Vu3atZOfn5/efvttHT9+XLNnz3Z3aAAAAJbK813nOnfurFq1aunHH39UXFycjh49qqlTp+ZnbAAAAIXCBx98oHfffVdr1qzRsmXL9H//93+aP3++MjIy3B0aAACApfI8ounzzz/X008/rSFDhqhmzZr5GRMAAEChcvjwYXXs2NH+vF27drLZbDp69KgqV67sxsgAAACslecRTZs2bdLZs2cV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VauW8fHxMSEhIebee+81S5YssbeXnL7j88Ply5dNQkKCSUtLs09r0qSJeeyxx8wff/xh/vrrrxzb8s347bffjCSzfft2h+mnT592aLsoHMifbm3O5k/GkEORQ928q393EhISjJ+fnylZsqTx8fEx5cqVM3fddZeZOHGiJfmTMdlzqMxjl5k3kT+RP2VF/mRMsfwuZME65cqVu6nl/fz85Ofnd1PrCAoK0t69e2WM0W+//aahQ4eqR48e2rJly02t93rS0tLk5eWVb+u/kWN7//33a86cOUpLS9O2bdvUr18/2Ww2TZw4MR8iLDgy9zurG22bly5dkre3txVhXdehQ4fUokULlSxZUpMmTVL9+vWVlpamNWvWaNiwYdqzZ49L4sjk7e2t8uXL25/v2rVLJ0+eVEBAgD0+Hx8f7dq1S++//74qVaqkLl265Lium/18eHt7q3jx4pKk0qVL3/B6rJC1fSUmJuqll17SAw88oMOHD7s1rsDAQAUGBub7dk6fPq2WLVvqzJkzevXVV9W4cWMVK1ZMX375pV544QW1bdvWpSMrPD09HdqpJB04cEBPPfWUKleubJ929Tz5oUSJEvm+DRRO5E8FK3+SyKGyIodyXtYc6uDBg2revLkuXLig559/Xo888ohD/lS7du18y58k9+dNmcifyJ9y47b8yeWlrULqehXnjRs3msaNGxtvb29Tvnx58+KLLzpUOJOTk02fPn2Mv7+/KV++vJkyZYpp06aNGTFihH2erBXYjIwMExMTY0JDQ423t7epUKGCGT58uDHGmDZt2mTrLTHmSo9aiRIlHOJavny5adSokfHx8TFlypQxXbt2zXUfclr+7bffNpLMmTNn7NOWLVtm7rzzTuPj42OqVq1qxo4d67Cvu3fvNi1atDA+Pj7m9ttvN+vWrXOogGdWYxcuXGhat25tfHx8zJw5c4wxxsycOdPUrl3b+Pj4mFq1aplp06bZ15uammqGDRtmypcvb3x8fMzf/vY389prr133eF19bI0x5vfffzddunQxAQEBpnjx4qZHjx4mMTHR/np4eLgJCgoyH3zwgalSpYoJCgoylStXNuHh4fZ5Tpw4YR555BFTsWJF4+fnZ+rVq2cWLFjgcPzatGljhg8fbp5//nlTqlQpExISYmJiYhzm+fXXX02rVq3sx2vt2rXZegx+/PFHc8899xhfX19TunRpM2jQIHP27Fn765ntc8KECSY4ONiUKFHCjBs3zqSlpZnnnnvOlCpVylSqVMnMnj07+xufxc228zZt2phhw4aZESNGmDJlypi7777bGGPMrl27zP33328CAgJMcHCweeyxx8zx48ftyy1evNjUq1fPvn/33nuvOXfunImJicnW1jds2JBjbB06dDCVKlUy586dy/Za1ir/1cf2hRdeMDVr1jR+fn6matWq5qWXXjKXLl2yv75jxw5z9913m8DAQFO8eHHTsGFD89133xljjDl06JB54IEHTMmSJY2/v7+pU6eOWblypTHGsWcs8/HV+5H1M5fZ27F8+XJ7L7CXl5fx9PQ0MTEx5vLly6Z169bG29vbSDKenp6mYcOG9l74zM9V1n9169Y1ffv2NWXKlLF/17Rp08YMHjzYPP7446ZkyZLG19fXhIWFmeDgYOPv72+aNGliXnzxRVOiRAmzevVqU758eSPJREREmBo1apiAgAATGRlpjh49aowxTr1HObWvr7/+2kgyx44ds0+7XntPT08348aNM5UqVTLe3t4mPDzcfP755/bXr/VdUaVKFYdYq1SpYt+PrJ/vzFgnTZpkypcvb0qXLm2GDh3q0DaOHj1qOnbsaD+G8+fPv25P2pAhQ0xAQIA5cuRIttfOnj1r/zxdvZ7JkyebevXqGX9/f1O5cmUzZMgQh2NyrbZ46tQp06dPH1O2bFnj6+tratSoYf8uyNo7llMbmjNnTo4j5TZt2mTatGlj72Fu3769OXXqlDHGmM8//9y0aNHClChRwpQuXdp06tTJ7N+/377s1dto06aNwzHPdPHiRTN8+HBTrlw54+PjY1q0aGG2bt1qfz0zrvXr15uIiAjj5+dnmjVrZvbs2ZPr8YfrkT8VrfwpJibGlCpVyjRs2NCeP/Xq1ct06dLF3Hnnnfb5yKHIofKaQzVu3PiaOVTW0SKSzN/+9jfj4eFhJJlatWqZy5cvm4EDB5qyZcsam81mbDabKV68uOndu7c9h9q/f3+2bVSvXt08+OCD9u+bzP9PnTplHn/8cVOiRAlTrFgx4+PjY/z8/EyTJk0c4oqOjjYeHh7Gx8fHBAQEGH9/f/Kn/4/8qXDkT1yjyQWOHDmijh07qnHjxtq5c6fee+89zZo1S6+++qp9nujoaH3zzTdavny51q1bp6+//lo//PBDrutcsmSJ3nzzTc2YMUP79u3TsmXLVL9+fUnS0qVLVblyZY0fP14JCQlKSEjIcR0rV67UQw89pI4dO2r79u2Kj49XkyZN8rxfx44d06effipPT095enpKkr7++mv17dtXI0aM0C+//KIZM2Zo7ty5mjBhgiQpPT1dXbt2lb+/v7Zs2aL3339fo0ePznH9I0eO1IgRI7R7925FRkZq/vz5GjNmjCZMmKDdu3frtdde08svv6x58+ZJkt5++20tX75c//nPf7R3717Nnz9fYWFh1z1eV8vIyNCDDz6oU6dO6csvv9S6det08OBB9erVy2G+lJQULVu2TCtWrNDbb7+to0eP6vjx4/bXL168qIiICK1cuVI//fSTnnzyST3++OPaunWrw3rmzZungIAAbdmyRa+//rrGjx+vdevW2WPp1q2bvL29tWXLFk2fPl0vvvhitjgiIyNVqlQpfffdd1q8eLHWr1+vqKgoh/m++OILHT16VF999ZWmTJmimJgYPfDAAypVqpS2bNmip556SoMHD9aff/6Z63t+LXlp55n76+3trW+++UbTp0/X6dOn1bZtW9155536/vvvtXr1aiUlJalnz56SpISEBPXu3VsDBw7U7t27tXHjRnXr1k3GGD333HPq2bOn7r//fntbb968ebbYTp06pdWrV2vYsGEKCAjI9vq1ejiKFy+uuXPn6pdfftFbb72lmTNn6s0337S//uijj6py5cr67rvvtG3bNo0cOdLeOzZs2DClpqbqq6++0q5duzRx4sQce3Vq1aolm80m6UpbzWk/bDab/TMrXemdGD16tJ555hkNHDhQGRkZKlGihF5//XVt3LhRL7/8snbs2KHIyEhJUmhoqB5//HFJ0tSpU/Xll1+qYcOG+vTTT7PFs27dOn3//fdavny5OnTooNOnT8vLy0vbtm1Tjx49NHnyZKWkpOiNN97Qk08+qWLFimnPnj2qXr26vvrqKx0+fFjPPfecJOX5PcrJuXPn9NFHH6lGjRoqU6aMpLy197feekuTJ0/WG2+8oR9//FGRkZHq0qWL9u3bJ+na3xXfffedJGnOnDlKSEiwP8/Jhg0bdODAAW3YsEHz5s3T3LlzNXfuXPvrffv21dGjR7Vx40YtWbJE77//vo4dO5br+jIyMrRw4UI9+uijqlixYrbXAwMDVaxYzgORPTw89Pbbb+vnn3/W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PabAwEDt3btXnp6eql69uiTJ399fd9xxh73tZG3DzsravrZu3arIyEh16NBBv//+u6Trt/fk5GQdPXpULVq0cFhvixYt7J/fa31XOKNu3br20QiS437v3btXxYoVU8OGDe2v16hRQ6VKlcp1fTfTTtevX697771XlSpVUvHixfX444/r5MmTOn/+vKRrt8UhQ4Zo4cKFatCggV544QV9++23NxyHdP3fln379ql3796qVq2agoKC7L2hzlxH4sCBA0pLS3N4n728vNSkSROH72nJ8Tu2QoUKknTD7ROuRf5UOPOnwMBA+3f9li1b1LhxYwUGBurhhx+2z0MORQ51MznU1q1bNW7cOHl6eio1NVWS7Hf/yil/mjZtmm6//Xb5+PjIw8ND06ZN08aNGyVJP//8sxISEnT77bfb588pf5KujLAqVqyYihUrpvT0dN12222qUqWKPYf68ssvdezYMfn7+ys4OFj+/v6qXr26vd2SP5E/Fab8iULTLSo0NFR79+7Vu+++Kz8/Pw0dOlStW7dWWlpantdxIxe29PDwUI0aNXT77bcrOjpad911l4YMGWJ//dy5cxo3bpzDj+iuXbu0b98++fr6OrWtrF+E586dkyTNnDnTYd0//fST/vvf/0qSGjZsqN9++02vvPKKLly4oJ49e6p79+6SrDleV/P09FSNGjUUHh6u2bNn2/+YzzRp0iS99dZbevHFF7Vhwwb7aUyXLl1yWM/VFyG02Wz2IZBWymk7N7LtgIAA1ahRw/4v84snr64edn3u3Dl17tzZ4X3dsWOH9u3bp9atW8vT01Pr1q3T559/rjp16mjq1KmqVauWfvvttzxvs2bNmrLZbE5frHLz5s169NFH1bFjR61YsULbt2/X6NGjHd7DsWPH6ueff1anTp30xRdfqE6dOvbT0Z544gkdPHhQjz/+uHbt2qVGjRpp6tSp2bZTo0YNh+QyU3BwsDw9Pe2f1ayf2auP49y5c/X666+rZs2aev/997V69Wp17NhRkrK1ubw6d+6cPD09tW3bNtWqVUtPPfWUduzYoQkTJsjf398+n5eXl2w2m/2HPutjZ2VtX40bN9a///1vpaSkaObMmTe0vpxc67vCGVZ/dsuVK6eSJUs63U4PHTqkBx54QHfccYeWLFmibdu2adq0aZL+995fqy1mJqLPPPOMjh49qnvvvdc+dP9GXO+3pXPnzjp16pRmzpypLVu22C+GfKPt9Hqyvk+Zn7P8+I7FrYH8yf35k4eHh/27Pjw8XI888ohSU1M1a9Ys+zzkULkvn1VRz6GqVasmm81mP7Ur6/SQkBCHaZmf26uP4cKFC/Xcc8/pjz/+UNu2bTV//nz17NnT/kf8jfw2paSk2POnzMLMU089pd27d+vRRx+1t53M/zPzJvKnG0P+VDDzJwpNLnD77bdr8+bNDl8c33zzjYoXL67KlSurWrVq8vLycjiX9cyZM/r111+vuV4/Pz917txZb7/9tjZu3KjNmzdr165dkq7cjSHzfM7c3HHHHYqPj7+JPbtyHYBFixbZr4fQsGFD7d271+FHNPOfh4eHatWqpT/++ENJSUn2dVzrHN5MISEhqlixog4ePJhtvVWrVrXPFxQUpF69emnmzJlatGiRlixZYj/f9FrHK6vbb79df/zxh/744w/7tF9++UWnT59WnTp1cozPw8ND7dq105kzZ3ThwgVJV97jBx98UI899pjCw8NVrVq1676nucWS9ToRmYlh1nl27typlJQU+7RvvvnGfrxd5XrtPDcNGzbUzz//rLCwsGzvbWYyYLPZ1KJFC40bN07bt2+Xt7e3PRHJS1svXbq0IiMjNW3aNIfjlOn06dM5Lvftt9+qSpUqGj16tBo1aqSaNWvae4ayuu222/TMM89o7dq16tatm8MdZUJDQ/X/2LvzuCjL/f/j7wFh2MSdReSIWy6pUBgel9SKpGzROqlZCVqZlXY0ypIWkVLJFrPMQi3bLY+2edJcIj3l8lVzqTQ1zTUXFE1RVEC4fn/4Y3IEDPCGEXg9Hw8fzVxzL5/75pqZq/fcy4MPPqjPP/9cjz32WKFf+HXq1NE111wjSY7+U5gLvWe/+eYbSWevMXLfffcpJibGqdYaNWo4ztPP319nzpzRmjVrnJbj4+MjY4xWrlypK664Qrm5udq6dat27typq6++Wk2bNlVgYKDTL7t/pzh/o6LYbDa5ubk59svf9Xd/f3/Vr19fy5Ytc1rOsmXLnN6/F/qs8PDwKHW9+Zo3b64zZ85o3bp1jrZt27Zd8JdkNzc33Xnnnfr444+1b9++Aq+fOHGi0CMJ1qxZo7y8PL3yyiv65z//qcsuu6zQ+S/UF+vVq6e4uDh99NFHmjhxoqZOnVrSTXa4UD89fPiwtmzZomeeeUbXXXedWrZsWWCf5F+n5UJ/gyZNmjiuU5IvJydHq1evLvJzGhUP46fKP36Szn721ahRQ8888wxjKMZQJRpD1a5dW9dff73efvvtC26DVPDot3zLli1TmzZtlJmZqalTp6pfv346fPiw4/u2evXqCg4OdvS/3NzcQsdP+fWcOXNGNptNubm5OnjwoGrVquU0hirJHcAYP53F+Klijp8Imix07NixAr8o7NmzRw8//LD27NmjRx55RJs3b9ZXX32lxMRExcfHy83NTdWrV1dcXJxGjBihxYsXa+PGjbrvvvvk5uZW6FEO0tmjF9555x1t2LBB27dv10cffSRvb281bNhQkhQWFqbvv/9ee/fuVXp6eqHLSExM1CeffKLExERt2rTJcYGzkggNDdVtt92mUaNGSZJGjRqlDz74QElJSdq4caM2bdqkTz/9VM8884wk6frrr1eTJk0UFxenn3/+WcuWLXO8VtS25ktKSlJycrJef/11/fbbb/rll1/07rvvasKECZKkCRMm6JNPPtHmzZv122+/adasWQoKClLNmjX/dn+dKzo6Wm3atNHdd9+ttWvXatWqVYqNjVXXrl0LPUw2X3h4uCQ5kvBmzZpp0aJFWr58uTZt2qTBgwc7DRCLIzo6Wpdddpni4uL0008/6Ycffihw8c+7775bXl5eiouL04YNG7R48WI98sgj6t+/f4Ffc8rS3/XzogwZMkRHjhxRv379tHr1av3+++9asGCBBg4cqNzcXK1cuVLjxo3Tjz/+qN27d+vzzz/XoUOHHIcwh4WF6eeff9aWLVuUnp5e5K+skydPVm5urqKiovTZZ59p69at2rRpk15//fUCh9Lna9asmXbv3q1PP/1Uv//+u15//XWni2efOnVKQ4cO1ZIlS7Rr1y4tW7ZMq1evdtQ2fPhwLViwQDt27NDatWu1ePFip0Ovz/Xyyy9Lkh588EHNnDlTmzZt0v79+5Wdna3NmzfL3d3d8Z6VpD179ji9Z/P7X3x8vFJTU9W3b98Ch8A+8MADks6+l5YvX65BgwYVGCB6e3s7TpE4ePCgevTooT59+qhGjRpq27atVq1apa+//rpEv2YX928kSVlZWTpw4IAOHDigTZs26ZFHHnH8YisVr7+PGDFC48eP18yZM7VlyxaNHDlS69ev17BhwyRd+LMiv97U1FQdOHCgxKcY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AAAAAAAAWIKgCQAAAAAAAJYgaAIAAAAAAIAlCJqAcmSz2TR69GjH8/fee082m007d+7823nnz5+viIgIeXl5yWaz6ejRo2VWZ0mFhYVpwIABLlv/gAEDFBYW5tR24sQJ3X///QoKCpLNZtPw4cO1c+dO2Ww2vffee+VeY7du3dStW7dyX68rXUy/OP+9AgBAWVq9erU6duwoX19f2Ww2rV+/3tUlObh6DDF69GjZbDantjNnzuiJJ55QaGio3Nzc1KtXL0mu+/4ubCxY2V1Mv3D12B2VH0ETKo380Cb/X7Vq1RQSEqIBAwZo7969ri7vohw+fFh9+vSRt7e3Jk+erA8//FC+vr5lvt7ff/9dgwcPVuPGjeXl5SV/f3916tRJr732mk6dOlXm678Y48aN03vvvaeHHnpIH374ofr371/m6/z11181evToYgWH5WXJkiWO98RHH31U6DSdOnWSzWZT69aty7k6AEBZOH9MdO6/kSNHOqZbuHCh7rvvPrVu3Vru7u5V7n/U8+Xk5Kh37946cuSIXn31VX344Ydq2LBhma83LS1Njz/+uFq0aCEfHx/5+voqMjJSY8aMuaR+UCzM9OnT9dJLL+mOO+7Q+++/r0cffbTM17lv3z6NHj36kgoB83/EtNlsGjNmTKHT3H333bLZbPLz8yvn6gDXqebqAgCrPffcc2rUqJFOnz6t//u//9N7772npUuXasOGDfLy8nJ1eaWyevVqHT9+XM8//7yio6PLZZ1z585V7969ZbfbFRsbq9atWys7O1tLly7ViBEjtHHjRk2dOrVcavk706ZNU15enlPbd999p3/+859KTEx0tBljdOrUKXl4eJRJHb/++quSkpLUrVu3AoP1hQsXlsk6i8vLy0szZszQPffc49S+c+dOLV++vMK+NwAARcsfE53r3B8VZsyYoZkzZ+rKK69U/fr1y7u8S8bvv/+uXbt2adq0abr//vvLZZ2rV69Wjx49dOLECd1zzz2KjIyUJP3444964YUX9P3337t87JDvmWeecQoopbPjrJCQEL366qtO7adOnVK1amXzv5j79u1TUlKSwsLCFBER4fRaYWPB8uTl5aVPPvlEzzzzjFN7ZmamvvrqK8ZZqHIImlDp3HjjjWrXrp0k6f7771fdunU1fvx4zZkzR3369HFxdaVz8OBBSVLNmjUtW2ZmZmaRR0Xt2LFDd955pxo2bKjvvvtOwcHBjteGDBmibdu2ae7cuZbVcrEKC44OHjyoVq1aObXZbDaXfdF7enq6ZL35evTooTlz5ig9PV1169Z1tM+YMUOBgYFq1qyZ/vzzTxdWCACw2rljosKMGzdO06ZNk4eHh26++WZt2LChHKuzxoXGM8VV3uOso0eP6rbbbpO7u7vWrVunFi1aOL0+duxYTZs2zbJaLla1atUKhEcHDx4sdH+5apxVVj8iFlePHj30+eef66efflJ4eLij/auvvlJ2drZuuOEGfffddy6sEChfnDqHSu/qq6+WdPbXqnNt3rxZd9xxh2rXri0vLy+1a9dOc+bMKTD/0aNH9eijjyosLEx2u10NGjRQbGys0tPTJUnZ2dkaNWqUIiMjVaNGDfn6+urqq6/W4sWLLam/W7duiouLkyRdddVVstlsTudUz5o1S5GRkfL29lbdunV1zz33FDhVcMCAAfLz89Pvv/+uHj16qHr16rr77ruLXOeLL76oEydO6J133nEKmfI1bdpUw4YNK3L+I0eO6PHHH1ebNm3k5+cnf39/3Xjjjfrpp58KTDtp0iRdfvnl8vHxUa1atdSuXTvNmDHD8frx48c1fPhwx/4PCAjQ9ddfr7Vr1zptX/4RRPmniu3YsUNz5851HM68c+fOIq/RtHnzZvXp00f16tWTt7e3mjdvrqefftrx+q5du/Twww+refPm8vb2Vp06ddS7d2+nU+Tee+899e7dW5J0zTXXONa7ZMkSSYWfR3/w4EHdd999CgwMlJeXl8LDw/X+++87TZNf88svv6ypU6eqSZMmstvtuuqqq7R69eoi/wbn69mzp+x2u2bNmuXUPmPGDPXp00fu7u4F5jlz5oyef/55xzrDwsL01FNPKSsry2k6Y4zGjBmjBg0ayMfHR9dcc402btxYaB1Hjx7V8OHDFRoaKrvdrqZNm2r8+PF/+ytkcfoBAKBk6tevf1H/g17cz+aVK1eqR48eqlWrlnx9fdW2bVu99tprTtN89913uvrqq+Xr66uaNWuqZ8+e2rRpk9M0+dcK+vXXX3XXXXepVq1a6ty5s+P1jz76yDEmql27tu68807t2bPngtswYMAAde3aVZLUu3dv2Ww2p+9rK+o635QpU7R3715NmDChQMgkSYGBgQWOjDlXScaen376qSIjI1W9enX5+/urTZs2Tvs+JydHSUlJatasmby8vFSnTh117txZixYtKrB90l/jksWLF2vjxo0FxjuFXaNp7969uu+++1S/fn3Z7XY1atRIDz30kLKzsyUVb9y4ZMkSXXXVVZKkgQMHOtabP6Yr7BpNmZmZeuyxxxxjjubNm+vll1+WMcZpOpvNpqFDh+rLL79U69atZbfbdfnll2v+/PlF/g3O16FDBzVq1MhpDCtJH3/8sW644QbVrl270PnefPNNXX755bLb7apfv76GDBlS6GmT+WNAb29vRUVF6Ycffih0eVlZWUpMTFTTpk1lt9sVGhqqJ554osDY7XzF6QdASXBEEyq9/DCgVq1ajraNGzeqU6dOCgkJ0ciRI+Xr66v//Oc/6tWrlz777DPddtttks5eUPrqq6/Wpk2bdO+99+rKK69Uenq65syZoz/++EN169ZVRkaG3n77bfXr10+DBg3S8ePH9c477ygmJkarVq0qcGhvST399NNq3ry5pk6d6jgEvkmTJpLOhhsDBw7UVVddpeTkZKWlpem1117TsmXLtG7dOqdfms6cOaOYmBh17txZL7/8snx8fIpc53//+181btxYHTt2LFXN27dv15dffqnevXurUaNGSktL05QpU9S1a1f9+uuvjsPzp02bpn//+9+64447NGzYMJ0+fVo///yzVq5cqbvuukuS9OCDD2r27NkaOnSoWrVqpcOHD2vp0qXatGmTrrzyygLrbtmypT788EM9+uijatCggR577DFJUr169XTo0KEC0//888+6+uqr5eHhoQceeEBhYWH6/fff9d///ldjx46VdPbw9uXLl+vOO+9UgwYNtHPnTr311lvq1q2bfv31V/n4+KhLly7697//rddff11PPfWUWrZs6ainMKdOnVK3bt20bds2DR06VI0aNdKsWbM0YMAAHT16tECQN2PGDB0/flyDBw+WzWbTiy++qNtvv13bt28v1v8k+Pj4qGfPnvrkk0/00EMPSZJ++uknbdy4UW+//bZ+/vnnAvPcf//9ev/993XHHXfoscce08qVK5WcnKxNmzbpiy++cEw3atQojRkzRj169FCPHj20du1ade/e3TGAzHfy5El17dpVe/fu1eDBg/WPf/xDy5cvV0JCgvbv36+JEycWWX9J+wEAQDp27Jjjh7F85x7VerGK89m8aNEi3XzzzQoODtawYcMU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//331atXL11zzTWSzoZ1jz/+uJKTk3XzzTerR48eWrdunb755psCR6+NGDFCc+bM0c0336wBAwYoMjJSmZmZ+uWXXzR79mzt3Lmz0NtuHz9+vMz7AQBURT///LPmzJkj6ew1LI8dO+YIOMLDw3XLLbcUOW9xPpvd3Nz01ltv6ZZbblFERIQGDhyo4OBgbd68WRs3bnT88PDSSy/pxhtvVIcOHXTffffp1KlTmjRpkmrUqKHRo0f/7XY0adJEY8aMUUJCgnbu3KlevXqpevXq2rFjh7744gs98MADevzxx0u8fy62rqLUqlVLX3zxhXr06KGIiAjdc889ioyMlCStXbtWn3zyyQWPKC/u2PP+++/XkSNHdO2116pBgwbatWuXJk2apIiICMfRyq1atVK3bt0UGRmp2rVr68cff9Ts2bM1dOjQUm/fucaNG6eFCxeqa9eueuCBB9SyZUvt379fs2bN0tKlS1WzZs1ijxubNGmimjVrKiUlRdWrV5evr6/at29f6LWxbrnlFl1zzTV6+umntXPnToWHh2vhwoX66quvNHz4cKcLf1uta9euf/uDYb169ZSQkKCkpCTdcMMNuvXWW7Vlyxa9+eabuuqqq3TPPfdIOjveHzNmjAYPHqxrr71Wffv21Y4dO/Tuu+8W2D/9+/fXf/7zHz344INavHixOnXqpNzcXG3evFn/+c9/tGDBgkIvyi6VfT9AFVSu97gDylD+rXwLu31qbm6uadKkiWnSpInjFq+///67iY2NNUFBQcbDw8OEhISYm2++2cyePdtp3sOHD5uhQ4eakJAQ4+npaRo0aGDi4uJMenq6MebsrVnHjRtnGjZsaOx2u7niiivM119/XeA2q8YUvOVrfs07duwo9bbNnDnTXHHFFcZut5vatWubu+++2/zxxx9O05x/S9Xi+u2338ygQYNMWFiY8fT0NNWrVzedOnUykyZNMqdPn3ZMd/4tUk+fPm0ee+wxExwcbLy9vU2nTp3MihUrCtyed8qUKaZLly6mTp06xm63myZNmpgRI0aYY8eOGWOMycrKMiNGjDDh4eGmevXqxtfX14SHh5s333yzwPadv68bNmxY4Dat+begPf+2uBs2bDC33XabqVmzpvHy8jLNmzc3zz77rOP1P//80wwcONDUrVvX+Pn5mZiYGLN58+YC222MMdOmTTONGzc27u7u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5eTFF1/Uddddpx9//FHZ2dl64okntHHjRh05ckTLli1zdXkAAAAXjSOaAAAAyknr1q3122+/qXPnzurZs6cyMzN1++23a926dWrSpImrywMAALhoHNEEAABQDnJycnTDDTcoJSVFTz/9tKvLAQAAKBPFDpp+/vnnYi+0bdu2pSoGAACgsvLw8CjReAoAAKAiKnbQFBERIZvNJmNMoa/nv2az2ZSbm2tZgQAAAJXFPffco3feeUcvvPCCq0sBAAAoE8UOmnbs2FGWdQAAAFR6Z86c0fTp0/Xtt98qMjJSvr6+Tq9PmDDBRZUBAABYo9hBU8OGDcuyDgAAgEpvw4YNuvLKKyVJv/32m9NrNpvNFSUBAABYqthB05w5c4q90FtvvbVUxQAAAFRmixcvdnUJAAAAZarYQVOvXr2KNR3XaAIAAPh7f/zxhySpQYMGLq4EAADAOm7FnTAvL69Y/wiZAAAACpeXl6fnnntONWrUUMOGDdWwYUPVrFlTzz//vPLy8lxdHgAAwEUr9hFNAAAAuDhPP/20465znTp1kiQtXbpUo0eP1unTpzV27FgXVwgAAHBxSh00ZWZm6n//+592796t7Oxsp9f+/e9/X3RhAAAAlc3777+vt99+2+l6lm3btlVISIgefvhhgiYAAFDhlSpoWrdunXr06KGTJ08qMzNTtWvXVnp6unx8fBQQEEDQBAAAUIgjR46oRYsWBdpbtGihI0eOuKAiAAAAaxX7Gk3nevTRR3XLLbfozz//lLe3t/7v//5Pu3btUmRkpF5++WWrawQAAKgUwsPD9cYbbxRof+ONNxQeHu6CigAAAKxVqiOa1q9frylTpsjNzU3u7u7KyspS48aN9eKLLyouLk6333671XUCAABUeC+++KJuuukmffvtt+rQoYMkacWKFdqzZ4/mzZvn4uoAAAAuXqmOaPLw8JCb29lZAwICtHv3bklSjRo1tGfPHuuqAwAAqES6du2qLVu26LbbbtPRo0d19OhR3X777dqyZYuuvvpqV5cHAABw0Up1RNMVV1yh1atXq1mzZuratatGjRql9PR0ffjhh2rdurXVNQIAAFQaISEhXPQbAABUWqU6omncuHEKDg6WJI0dO1a1atXSQw89pEOHDmnKlCmWFggAAFBZvPvuu5o1a1aB9lmzZun99993QUUAAADWKtURTe3atXM8DggI0Pz58y0rCAAAoLJKTk4u9Ee5gIAAPfDAA4qLi3NBVQAAANYp1RFNO3bs0NatWwu0b926VTt37rzYmgAAACql3bt3q1GjRgXaGzZs6LjmJQAAQEVWqiOaBgwYoHvvvVfNmjVzal+5cqXefvttLVmyxIraKqRXF/3m6hLKXdapk47Hk1K3yu7t48JqXOfR6y9zdQkAgEtcQECAfv75Z4WFhTm1//TTT6pTp45riroEVMXxk8QYSmL8BACVUamOaFq3bp06depUoP2f//yn1q9ff7E1AQAAVEr9+vXTv//9by1evFi5ubnKzc3Vd999p2HDhunOO+90dXkAAAAXrVRHNNlsNh0/frxA+7Fjx5Sbm3vRRQEAAFRGzz//vHbu3KnrrrtO1aqdHYbl5eUpNjZW48aNc3F1AAAAF69UQVOXLl2UnJysTz75RO7u7pKk3NxcJScnq3PnzpYWCAAAUFl4enpq5syZGjNmjNavXy9vb2+1adNGDRs2dHVpAAAAlijVqXPjx4/Xd999p+bNm2vgwIEaOHCgmjdvru+//14vvfRSiZc3efJkhYWFycvLS+3bt9eqVauKNd+nn34qm82mXr16lXidAAAArtKsWTP17t1bN954o/7880/9+eefri4JAADAEqUKmlq1aqWff/5Zffr00cGDB3X8+HHFxsZq8+bNat26dYmWNXPmTMXHxysxMVFr165VeHi4YmJidPDgwQvOt3PnTj3++OO6+uqrS7MJAAAA5W748OF65513JJ09Grxr16668sorFRoaWqVvpgIAACqPUp06J0n169e35FoCEyZM0KBBgzRw4EBJUkpKiubOnavp06dr5MiRhc6Tm5uru+++W0lJSfrhhx909OjRi64DAACgrM2ePVv33HOPJOm///2vtm/frs2bN+vDDz/U008/rWXLlrm4QgAAgItT6qDphx9+0JQpU7R9+3bNmjVLISEh+vDDD9WoUaNiX6cpOztba9asUUJCgqPNzc1N0dHRWrFiRZHzPffccwoICNB9992nH3744YLryMrKUlZWluN5RkaGJCknJ0c5OTnFqrMkbKbqXQzdplynx1VxH0gqk/5UXFV1n9P3XNvvqrJz93tZfZ9URVVhP6anpysoKEiSNG/ePPXp00eXXXaZ7r33Xr322msurg4AAODilSpo+uyzz9S/f3/dfffdWrt2rSPI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bdmyZWrTpo08PDzUq1evQvtyWRgwYIB69epVputA5cT4qexUtPGTxBiqLFWlMVT+d1L+uInxU+EYP613tFW58ZOBJeLi4kzPnj3LdB0HDx40mZmZxZq2YcOG5tVXX3VqO3nypElLSyv1+t99910jyUgyNpvNBAUFmT59+phdu3aVepmXipLsW2PO/r3z90W1atVMWFiYGTFihDl16lQZVvkXSeaLL74ol3Wd69ztPvff1q1by72Wc2sq7ntv//79ZujQoaZRo0bG09PTNGjQwNx8883m22+/dUxTXvs2KyvL7N+/3+Tl5Tna6tSpYyIjI01YWJix2+0mICDAXHXVVebNN98sUf8syuLFi40k8+effzra4uLizI033mgyMjKMMcYcPnzY8dgqxf0bnd+/ateubWJiYsxPP/1kaT1/p7A+cPz4cZOenl4u6z927Jh56qmnTPPmzY3dbjeBgYHmuuuuM5999pmjvxT2GV8Wzpw5Y/bv329ycnIcbVFRUeaee+4xe/bsMX/++Wehffli7Nixw0gy69atc2o/evSoU99F5cD4qWIr6fjJGMZQjKEu3vnfO/v37zfe3t6mZs2axm63m3r16pl//vOfZvz48ZaMn4wpOIbK33f54ybGT4yfzsX4yZhqZR1kwTr16tW7qPm9vb3l7e19Ucvw9/fXli1bZIzRjh079PDDD6t3795auXLlRS337+Tk5MjDw6PMll+afXvDDTfo3XffVU5OjtasWaO4uDjZbDaNHz++DCq8dORv97lK2zezs7Pl6elpRVl/a+fOnerUqZNq1qypl156SW3atFFOTo4WLFigIUOGaPPmzeVSRz5PT08FBQU5nv/yyy86fPiwfH19HfXZ7Xb98ssvmjp1qkJCQnTrrbcWuqyLfX94enqqevXqkqTatWuXejlWOLd/HThwQM8884xuvvlm7d6926V1+fn5yc/Pr8zXc/ToUXXu3FnHjh3TmDFjdNVVV6latWr63//+pyeeeELXXnttuR5Z4e7u7tRPJen333/Xgw8+qAYNGjjazp+mLNSoUaPM14HKifHTpTV+khhDnYsxVMmdO4bavn27OnbsqFOnTmnEiBG68847ncZPLVq0KLPxk+T6cVM+xk+Mn4risvFTuUdbldTfJc5LliwxV111lfH09DRBQUHmySefdEo4MzIyzF133WV8fHxMUFCQmTBhgunatasZNmyYY5pzE9i8vDyTmJhoQkNDjaenpwkODjaPPPKIMcaYrl27Fvi1xJizv6jVqFHDqa45c+aYdu3aGbvdburUqWN69epV5DYUNv/rr79uJJljx4452r788ktzxRVXGLvdbho1amRGjx7ttK2bNm0ynTp1Mna73bRs2dIsWrTIKQHPT2M//fRT06VLF2O32827775rjDFm2rRppkWLFsZut5vmzZubyZMnO5ablZVlhgwZYoKCgozdbjf/+Mc/zLhx4/52f52/b40xZteuXebWW281vr6+pnr16qZ3797mwIEDjtfDw8ONv7+/+eCDD0zDhg2Nv7+/adCggQkPD3dMk56ebu68805Tv3594+3tbVq3bm1mzJjhtP+6du1qHnnkETNixAhTq1YtExgYaBITE52m+e2338zVV1/t2F8LFy4s8IvBzz//bK655hrj5eVlateubQYNGmSOHz/ueD2/f44dO9YEBASYGjVqmKSkJJOTk2Mef/xxU6tWLRMSEmKmT59e8A9/jovt5127djVDhgwxw4YNM3Xq1DHdunUzxhjzyy+/mBtuuMH4+vqagIAAc88995hDhw455ps1a5Zp3bq1Y/uuu+46c+LECZOYmFigry9evLjQ2m688UYTEhJiTpw4UeC1c1P+8/ftE088YZo1a2a8vb1No0aNzDPPPGOys7Mdr69fv95069bN+Pn5merVq5srr7zSrF692hhjzM6dO83NN99satasaXx8fEyrVq3M3LlzjTHOv4zlPz5/O859z+X/2jFnzhzHr8AeHh7G3d3dJCYmmjNnzpguXboYT09PI8m4u7ubK6+80vErfP776tx/l19+uYmNjTV16tRxfNZ07drVDB482PTv39/UrFnTeHl5mbCwMBMQEGB8fHxMVFSUefLJJ02NGjXM/PnzTVBQkJFkIiMjTdOmTY2vr6+JiYkx+/btM8aYEv2NCutfP/zwg5FkDh486Gj7u/6em5trkpKSTEhIiPH09DTh4eHmm2++cbx+oc+Khg0bOtXasGFDx3ac+/7Or/Wll14yQUFBpnbt2ubhhx926hv79u0zPXr0cOzDjz/++G9/SXvooYeMr6+v2bt3b4HXjh8/7ng/nb+cV155xbRu3dr4+PiYBg0amIceeshpn1yoLx45csTcddddpm7dusbLy8s0bdrU8Vlw7q9jhfWhd999t9Aj5ZYuXWq6du3q+IW5e/fu5siRI8YYY7755hvTqVMnU6NGDVO7dm1z0003mW3btjnmPX8dXbt2ddrn+U6fPm0eeeQRU69ePWO3202nTp3MqlWrHK/n1/Xtt9+ayMhI4+3tbTp06GA2b95c5P5H+WP8VLXGT4mJiaZWrVrmyiuvdIyf+vbta2699VZzxRVXOKZjDMUYqrhjqKuuuuqCY6hzjxaRZP7xj38YNzc3I8k0b97cnDlzxtx7772mbt26xmazGZvNZqpXr2769evnGENt27atwDqaNGlievbs6fi8yf/vkSNHTP/+/U2NGjVMtWrVjN1uN97e3iYqKsqprvj4eOPm5mbsdrvx9fU1Pj4+jJ/+P8ZPlWP8xDWaysHevXvVo0cPXXXVVfrpp5/01ltv6Z133tGYMWMc08THx2vZsmWaM2eOFi1apB9++EFr164tcpmfffaZXn31VU2ZMkVbt27Vl19+qTZt2kiSPv/8czVo0EDPPfec9u/fr/379xe6jLlz5+q2225Tjx49tG7dOqWmpioqKqrY23Xw4EF98cUXcnd3l7u7uyTphx9+UGxsrIYNG6Zff/1VU6ZM0XvvvaexY8dKknJzc9WrVy/5+Pho5cqVmjp1qp5++ulClz9y5EgNGzZMmzZtUkxMjD7++GONGjVKY8eO1aZNmzRu3Dg9++yzev/99yVJr7/+uubMmaP//Oc/2rJliz7++GOFhYX97f46X15ennr27KkjR47of//7nxYtWqTt27erb9++TtNlZmbqyy+/1Ndff63XX39d+/bt06FDhxyvnz59WpGRkZo7d642bNigBx54QP3799eqVauclvP+++/L19dXK1eu1IsvvqjnnntOixYtctRy++23y9PTUytXrlRKSoqefPLJAnXExMSoVq1aWr16tWbNmqVvv/1WQ4cOdZruu+++0759+/T9999rwoQJSkxM1M0336xatWpp5cqVevDBBzV48GD98ccfRf7NL6Q4/Tx/ez09PbVs2TKlpKTo6NGjuvbaa3XFFVfoxx9/1Pz585WWlqY+ffpIkvbv369+/frp3nvv1aZNm7RkyRLdfvvtMsbo8ccfV58+fXTDDTc4+nrHjh0L1HbkyBHNnz9fQ4YMka+vb4HXL/QLR/Xq1fXee+/p119/1WuvvaZp06bp1Vdfdbx+9913q0GD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",
|
||
"text/plain": [
|
||
"<Figure size 1200x1200 with 4 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from sklearn.model_selection import cross_val_score\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.linear_model import LinearRegression, LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
|
||
"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"\n",
|
||
"# Определяем категориальные и числовые столбцы\n",
|
||
"numerical_cols = [\"Open\", \"Close\", \"High\", \"Low\"]\n",
|
||
"\n",
|
||
"# Создаем преобразователь для категориальных и числовых столбцов\n",
|
||
"preprocessor = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" ('num', StandardScaler(), numerical_cols)\n",
|
||
" ])\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n",
|
||
"X_reg = df[numerical_cols]\n",
|
||
"y_reg = df['Volume']\n",
|
||
"\n",
|
||
"# Список моделей для задачи регрессии\n",
|
||
"models_reg = {\n",
|
||
" \"Linear Regression\": LinearRegression(),\n",
|
||
" \"Random Forest Regression\": RandomForestRegressor(),\n",
|
||
" \"Gradient Boosting Regression\": GradientBoostingRegressor()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Оценка смещения и дисперсии для задачи регрессии\n",
|
||
"mae_means = []\n",
|
||
"mae_stds = []\n",
|
||
"r2_means = []\n",
|
||
"r2_stds = []\n",
|
||
"\n",
|
||
"for name, model in models_reg.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" mae_scores = -cross_val_score(pipeline, X_reg, y_reg, cv=5, scoring='neg_mean_absolute_error')\n",
|
||
" r2_scores = cross_val_score(pipeline, X_reg, y_reg, cv=5, scoring='r2')\n",
|
||
" mae_means.append(mae_scores.mean())\n",
|
||
" mae_stds.append(mae_scores.std())\n",
|
||
" r2_means.append(r2_scores.mean())\n",
|
||
" r2_stds.append(r2_scores.std())\n",
|
||
"\n",
|
||
"# Визуализация результатов для задачи регрессии\n",
|
||
"fig, ax = plt.subplots(1, 2, figsize=(12, 6))\n",
|
||
"\n",
|
||
"ax[0].bar(models_reg.keys(), mae_means, yerr=mae_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[0].set_ylabel('MAE')\n",
|
||
"ax[0].set_title('Mean Absolute Error (MAE) for Regression Models')\n",
|
||
"ax[0].yaxis.grid(True)\n",
|
||
"\n",
|
||
"ax[1].bar(models_reg.keys(), r2_means, yerr=r2_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[1].set_ylabel('R²')\n",
|
||
"ax[1].set_title('R-squared (R²) for Regression Models')\n",
|
||
"ax[1].yaxis.grid(True)\n",
|
||
"\n",
|
||
"plt.tight_layout()\n",
|
||
"plt.show()\n",
|
||
"\n",
|
||
"# Разделяем данные на признаки (X) и целевую переменную (y) для задачи классификации\n",
|
||
"X_class = df[numerical_cols]\n",
|
||
"y_class = (df['Volume'] > df['Volume'].mean()).astype(int)\n",
|
||
"\n",
|
||
"# Список моделей для задачи классификации\n",
|
||
"models_class = {\n",
|
||
" \"Logistic Regression\": LogisticRegression(),\n",
|
||
" \"Random Forest Classification\": RandomForestClassifier(),\n",
|
||
" \"Gradient Boosting Classification\": GradientBoostingClassifier()\n",
|
||
"}\n",
|
||
"\n",
|
||
"# Оценка смещения и дисперсии для задачи классификации\n",
|
||
"accuracy_means = []\n",
|
||
"accuracy_stds = []\n",
|
||
"precision_means = []\n",
|
||
"precision_stds = []\n",
|
||
"recall_means = []\n",
|
||
"recall_stds = []\n",
|
||
"f1_means = []\n",
|
||
"f1_stds = []\n",
|
||
"\n",
|
||
"for name, model in models_class.items():\n",
|
||
" pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preprocessor),\n",
|
||
" ('model', model)\n",
|
||
" ])\n",
|
||
" accuracy_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='accuracy')\n",
|
||
" precision_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='precision')\n",
|
||
" recall_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='recall')\n",
|
||
" f1_scores = cross_val_score(pipeline, X_class, y_class, cv=5, scoring='f1')\n",
|
||
" accuracy_means.append(accuracy_scores.mean())\n",
|
||
" accuracy_stds.append(accuracy_scores.std())\n",
|
||
" precision_means.append(precision_scores.mean())\n",
|
||
" precision_stds.append(precision_scores.std())\n",
|
||
" recall_means.append(recall_scores.mean())\n",
|
||
" recall_stds.append(recall_scores.std())\n",
|
||
" f1_means.append(f1_scores.mean())\n",
|
||
" f1_stds.append(f1_scores.std())\n",
|
||
"\n",
|
||
"# Визуализация результатов для задачи классификации\n",
|
||
"fig, ax = plt.subplots(2, 2, figsize=(12, 12))\n",
|
||
"\n",
|
||
"ax[0, 0].bar(models_class.keys(), accuracy_means, yerr=accuracy_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[0, 0].set_ylabel('Accuracy')\n",
|
||
"ax[0, 0].set_title('Accuracy for Classification Models')\n",
|
||
"ax[0, 0].yaxis.grid(True)\n",
|
||
"\n",
|
||
"ax[0, 1].bar(models_class.keys(), precision_means, yerr=precision_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[0, 1].set_ylabel('Precision')\n",
|
||
"ax[0, 1].set_title('Precision for Classification Models')\n",
|
||
"ax[0, 1].yaxis.grid(True)\n",
|
||
"\n",
|
||
"ax[1, 0].bar(models_class.keys(), recall_means, yerr=recall_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[1, 0].set_ylabel('Recall')\n",
|
||
"ax[1, 0].set_title('Recall for Classification Models')\n",
|
||
"ax[1, 0].yaxis.grid(True)\n",
|
||
"\n",
|
||
"ax[1, 1].bar(models_class.keys(), f1_means, yerr=f1_stds, align='center', alpha=0.5, ecolor='black', capsize=10)\n",
|
||
"ax[1, 1].set_ylabel('F1-score')\n",
|
||
"ax[1, 1].set_title('F1-score for Classification Models')\n",
|
||
"ax[1, 1].yaxis.grid(True)\n",
|
||
"\n",
|
||
"plt.tight_layout()\n",
|
||
"plt.show()"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "aisenv",
|
||
"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
|
||
}
|