diff --git a/lab_4/lab_4.ipynb b/lab_4/lab_4.ipynb new file mode 100644 index 0000000..479c8a1 --- /dev/null +++ b/lab_4/lab_4.ipynb @@ -0,0 +1,1946 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Начало лабораторной работы" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 235 entries, 1 to 235\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Country (or dependency) 235 non-null object \n", + " 1 Population2020 235 non-null int64 \n", + " 2 Yearly Change 235 non-null float64\n", + " 3 NetChange 235 non-null int64 \n", + " 4 Density 235 non-null object \n", + " 5 LandArea 235 non-null int64 \n", + " 6 Migrants (net) 201 non-null object \n", + " 7 Fert. Rate 235 non-null object \n", + " 8 Med. Age 235 non-null object \n", + " 9 Urban Pop % 235 non-null object \n", + " 10 World Share 235 non-null object \n", + "dtypes: float64(1), int64(3), object(7)\n", + "memory usage: 22.0+ KB\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Бизнес-цели" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Прогнозирование популяции в странах:\n", + "\n", + "Цель: Разработать модель, которая будет предсказывать популяцию в странах\n", + "Применение:\n", + "Погнозировать глобальную мировую экономику\n", + "\n", + "2. Оптимизация характеристик:\n", + "Цель: Определить оптимальные характеристик по увеличению популяции.\n", + "Применение:\n", + "Понять, какие характеристики соответствуют увеличению популяцию\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Прогнозирование популяции" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Среднее значение поля 'Population2020: 33171202.680851065\n", + " Country (or dependency) Population2020 Yearly Change NetChange Density \\\n", + "no \n", + "1 China 1439323776 0.39 5540090 153 \n", + "2 India 1380004385 0.99 13586631 464 \n", + "3 United States 331002651 0.59 1937734 36 \n", + "4 Indonesia 273523615 1.07 2898047 151 \n", + "5 Pakistan 220892340 2.00 4327022 287 \n", + "\n", + " LandArea Migrants (net) Fert. Rate Med. Age Urban Pop % World Share \\\n", + "no \n", + "1 9388211 -348,399 1.7 38 61% 18.47% \n", + "2 2973190 -532,687 2.2 28 35% 17.70% \n", + "3 9147420 954,806 1.8 38 83% 4.25% \n", + "4 1811570 -98,955 2.3 30 56% 3.51% \n", + "5 770880 -233,379 3.6 23 35% 2.83% \n", + "\n", + " above_average_Population2020 Population2020_volatility \n", + "no \n", + "1 1 1439322975 \n", + "2 1 1439322975 \n", + "3 1 1439322975 \n", + "4 1 1439322975 \n", + "5 1 1439322975 \n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Устанавливаем случайное состояние\n", + "random_state = 28\n", + "\n", + "# Рассчитываем среднее значение популяции\n", + "average_count = df['Population2020'].mean()\n", + "print(f\"Среднее значение поля 'Population2020: {average_count}\")\n", + "\n", + "# Создаем новую переменную, указывающую, превышает ли популяция среднее\n", + "df[\"above_average_Population2020\"] = (df[\"Population2020\"] > average_count).astype(int)\n", + "\n", + "# Рассчитываем волатильность (разницу между максимальной и минимальной популяцией)\n", + "df[\"Population2020_volatility\"] = df[\"Population2020\"].max() - df[\"Population2020\"].min()\n", + "\n", + "# Выводим первые строки измененной таблицы для проверки\n", + "print(df.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Оптимизация параметров магазина:" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Средняя популяция для 'NetChange':\n", + "NetChange\n", + "-383840 1.264765e+08\n", + "-259876 4.373376e+07\n", + "-126866 1.923769e+07\n", + "-88249 6.046183e+07\n", + "-79889 2.843594e+07\n", + " ... \n", + " 2898047 2.735236e+08\n", + " 4327022 2.208923e+08\n", + " 5175990 2.061396e+08\n", + " 5540090 1.439324e+09\n", + " 13586631 1.380004e+09\n", + "Name: Population2020, Length: 234, dtype: float64\n", + "\n", + "Средняя популяция для 'Yearly Change':\n", + "Yearly Change\n", + "-2.47 2860853.0\n", + "-1.69 11239.0\n", + "-1.35 2722289.0\n", + "-1.08 1886198.0\n", + "-0.74 6948445.0\n", + " ... \n", + " 3.27 32866272.0\n", + " 3.32 45741007.0\n", + " 3.47 1402985.0\n", + " 3.68 1701575.0\n", + " 3.84 24206644.0\n", + "Name: Population2020, Length: 174, dtype: float64\n", + "\n", + "Средняя популяция для 'LandArea':\n", + "LandArea\n", + "0 8.010000e+02\n", + "1 3.924200e+04\n", + "10 1.752400e+04\n", + "20 1.082400e+04\n", + "21 9.877000e+03\n", + " ... \n", + "8358140 2.125594e+08\n", + "9093510 3.774215e+07\n", + "9147420 3.310027e+08\n", + "9388211 1.439324e+09\n", + "16376870 1.459345e+08\n", + "Name: Population2020, Length: 226, dtype: float64\n", + "\n", + "Средняя популяция для 'Density':\n", + "Density\n", + "0 30125.0\n", + "1,246 62278.0\n", + "1,261 42876.0\n", + "1,265 164689383.0\n", + "1,380 441543.0\n", + " ... \n", + "93 40222493.0\n", + "94 50263037.0\n", + "95 17109811.5\n", + "96 71986.0\n", + "99 32365999.0\n", + "Name: Population2020, Length: 165, dtype: float64\n", + "\n", + "Средняя популяция для комбинации 'NetChange' и 'LandArea':\n", + "NetChange LandArea\n", + "-383840 364555 1.264765e+08\n", + "-259876 579320 4.373376e+07\n", + "-126866 230170 1.923769e+07\n", + "-88249 294140 6.046183e+07\n", + "-79889 882050 2.843594e+07\n", + " ... \n", + " 2898047 1811570 2.735236e+08\n", + " 4327022 770880 2.208923e+08\n", + " 5175990 910770 2.061396e+08\n", + " 5540090 9388211 1.439324e+09\n", + " 13586631 2973190 1.380004e+09\n", + "Name: Population2020, Length: 235, dtype: float64\n", + "\n", + "Средняя популяция для комбинации 'LandArea' и 'Density':\n", + "LandArea Density\n", + "0 2,003 8.010000e+02\n", + "1 26,337 3.924200e+04\n", + "10 136 1.357000e+03\n", + " 3,369 3.369100e+04\n", + "20 541 1.082400e+04\n", + " ... \n", + "8358140 25 2.125594e+08\n", + "9093510 4 3.774215e+07\n", + "9147420 36 3.310027e+08\n", + "9388211 153 1.439324e+09\n", + "16376870 9 1.459345e+08\n", + "Name: Population2020, Length: 235, dtype: float64\n", + "\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Загружаем набор данных\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Устанавливаем случайное состояние\n", + "random_state = 42\n", + "\n", + "# Рассчитываем среднюю популяцию для каждого значения каждого признака\n", + "for column in [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]:\n", + " print(f\"Средняя популяция для '{column}':\")\n", + " print(df.groupby(column)[\"Population2020\"].mean())\n", + " print()\n", + "\n", + "\n", + "print(\"Средняя популяция для комбинации 'NetChange' и 'LandArea':\")\n", + "print(df.groupby([\"NetChange\", \"LandArea\"])[\"Population2020\"].mean())\n", + "print()\n", + "\n", + "\n", + "print(\"Средняя популяция для комбинации 'LandArea' и 'Density':\")\n", + "print(df.groupby([\"LandArea\", \"Density\"])[\"Population2020\"].mean())\n", + "print()" + ] + }, + { + "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": 133, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MAE: 18325226.004086882\n", + "MSE: 1372712018411057.2\n", + "RMSE: 37050128.453367844\n", + "R²: -0.22943866941880264\n", + "Ориентиры для прогнозирования не достигнуты.\n", + "Средняя популяция 'LandArea':\n", + "LandArea\n", + "0 8.010000e+02\n", + "1 3.924200e+04\n", + "10 1.752400e+04\n", + "20 1.082400e+04\n", + "21 9.877000e+03\n", + " ... \n", + "8358140 2.125594e+08\n", + "9093510 3.774215e+07\n", + "9147420 3.310027e+08\n", + "9388211 1.439324e+09\n", + "16376870 1.459345e+08\n", + "Name: Population2020, Length: 226, dtype: float64\n", + "\n", + "Средняя популяция 'NetChange':\n", + "NetChange\n", + "-383840 1.264765e+08\n", + "-259876 4.373376e+07\n", + "-126866 1.923769e+07\n", + "-88249 6.046183e+07\n", + "-79889 2.843594e+07\n", + " ... \n", + " 2898047 2.735236e+08\n", + " 4327022 2.208923e+08\n", + " 5175990 2.061396e+08\n", + " 5540090 1.439324e+09\n", + " 13586631 1.380004e+09\n", + "Name: Population2020, Length: 234, dtype: float64\n", + "\n", + "Средняя популяция 'Density':\n", + "Density\n", + "0 3.012500e+04\n", + "2 1.937814e+06\n", + "3 9.460677e+06\n", + "4 8.106156e+06\n", + "5 4.649658e+06\n", + " ... \n", + "3369 3.369100e+04\n", + "7140 7.496981e+06\n", + "8358 5.850342e+06\n", + "21645 6.493350e+05\n", + "26337 3.924200e+04\n", + "Name: Population2020, Length: 165, dtype: float64\n", + "\n", + "NetChange LandArea\n", + "-383840 364555 1.264765e+08\n", + "-259876 579320 4.373376e+07\n", + "-126866 230170 1.923769e+07\n", + "-88249 294140 6.046183e+07\n", + "-79889 882050 2.843594e+07\n", + " ... \n", + " 2898047 1811570 2.735236e+08\n", + " 4327022 770880 2.208923e+08\n", + " 5175990 910770 2.061396e+08\n", + " 5540090 9388211 1.439324e+09\n", + " 13586631 2973190 1.380004e+09\n", + "Name: Population2020, Length: 235, dtype: float64\n", + "\n", + "LandArea Density\n", + "0 2003 8.010000e+02\n", + "1 26337 3.924200e+04\n", + "10 136 1.357000e+03\n", + " 3369 3.369100e+04\n", + "20 541 1.082400e+04\n", + " ... \n", + "8358140 25 2.125594e+08\n", + "9093510 4 3.774215e+07\n", + "9147420 36 3.310027e+08\n", + "9388211 153 1.439324e+09\n", + "16376870 9 1.459345e+08\n", + "Name: Population2020, Length: 235, dtype: float64\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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": [ + "import pandas as pd\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.metrics import mean_absolute_error, mean_squared_error, r2_score\n", + "\n", + "# Загружаем набор данных\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Разделяем данные на признаки (X) и целевую переменную (y)\n", + "\n", + "X = df.drop(\n", + " columns=[\n", + " \"Population2020\",\n", + " \"Country (or dependency)\",\n", + " \"Migrants (net)\",\n", + " \"Fert. Rate\",\n", + " \"Med. Age\",\n", + " \"Urban Pop %\",\n", + " \"World Share\",\n", + " \"Density\",\n", + " ],\n", + " axis=1,\n", + ")\n", + "\n", + "y = df[\"Population2020\"]\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", + "\n", + " \"LandArea\",\n", + " \"NetChange\", \"Density\"\n", + "]\n", + "\n", + "# Рассчитываем среднюю популяцию для каждого значения каждого признака\n", + "for column in columns_to_group:\n", + " print(f\"Средняя популяция '{column}':\")\n", + " print(df.groupby(column)[\"Population2020\"].mean())\n", + " print()\n", + "\n", + "# Рассчитываем средняя популяция для комбинаций признаков\n", + "\n", + "\n", + "print(df.groupby([\"NetChange\", \"LandArea\"])[\"Population2020\"].mean())\n", + "print()\n", + "\n", + "\n", + "print(df.groupby([\"LandArea\", \"Density\"])[\"Population2020\"].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": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи регрессии:\n", + "Model: Linear Regression\n", + "MAE: 18325226.004086882\n", + "MSE: 1372712018411057.2\n", + "RMSE: 37050128.453367844\n", + "R²: -0.22943866941880264\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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", + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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", + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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: 8668932.614893615\n", + "MSE: 406442910254215.25\n", + "RMSE: 20160429.31720987\n", + "R²: 0.63597854169292\n", + "\n", + "Model: Gradient Boosting Regression\n", + "MAE: 8278621.445813501\n", + "MSE: 351479677103981.1\n", + "RMSE: 18747791.259345222\n", + "R²: 0.6852051262385974\n", + "\n", + "Результаты для задачи классификации:\n", + "Model: Logistic Regression\n", + "Accuracy: 0.8936170212765957\n", + "\n", + "Model: Random Forest Classification\n", + "Accuracy: 0.9574468085106383\n", + "\n", + "Model: Gradient Boosting Classification\n", + "Accuracy: 0.8936170212765957\n", + "\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "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", + "# Загружаем набор данных\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "\n", + "# Разделяем данные на признаки (X) и целевую переменную (y) для задачи регрессии\n", + "X_reg = df.drop(\n", + " columns=[\n", + " \"Population2020\",\n", + " \"Country (or dependency)\",\n", + " \"Migrants (net)\",\n", + " \"Fert. Rate\",\n", + " \"Med. Age\",\n", + " \"Urban Pop %\",\n", + " \"World Share\",\n", + " \"Density\",\n", + " ],\n", + " axis=1,\n", + ")\n", + "y_reg = df[\"Population2020\"]\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(\n", + " columns=[\n", + " \"Population2020\",\n", + " \"Country (or dependency)\",\n", + " \"Migrants (net)\",\n", + " \"Fert. Rate\",\n", + " \"Med. Age\",\n", + " \"Urban Pop %\",\n", + " \"World Share\",\n", + " \"Density\",\n", + " ],\n", + " axis=1,\n", + ")\n", + "y_class = (df[\"Population2020\"] > df[\"Population2020\"].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": 135, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи регрессии:\n", + "Model: Linear Regression\n", + "MAE: 18355084.060291413\n", + "MSE: 1373553690261338.5\n", + "RMSE: 37061485.26788071\n", + "R²: -0.23019249389605534\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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", + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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: 8360523.173191491\n", + "MSE: 433344291612551.56\n", + "RMSE: 20816923.20235033\n", + "R²: 0.6118849240519788\n", + "\n", + "Model: Gradient Boosting Regression\n", + "MAE: 7374600.833694444\n", + "MSE: 279881158669974.12\n", + "RMSE: 16729649.089863604\n", + "R²: 0.7493307301928449\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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": [ + "import pandas as pd\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", + "# Загружаем набор данных\n", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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[\"Population2020\"]\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": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи классификации:\n", + "Model: Logistic Regression\n", + "Accuracy: 0.8936170212765957\n", + "\n", + "Model: Random Forest Classification\n", + "Accuracy: 0.9361702127659575\n", + "\n", + "Model: Gradient Boosting Classification\n", + "Accuracy: 0.9148936170212766\n", + "\n" + ] + } + ], + "source": [ + "import pandas as pd\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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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[\"Population2020\"] > df[\"Population2020\"].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": 137, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи регрессии:\n", + "Model: Linear Regression\n", + "Best Parameters: {}\n", + "MAE: 18355084.060291413\n", + "MSE: 1373553690261338.5\n", + "RMSE: 37061485.26788071\n", + "R²: -0.23019249389605534\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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", + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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: 8240284.800957445\n", + "MSE: 400813836952793.8\n", + "RMSE: 20020335.585418988\n", + "R²: 0.6410200946894263\n", + "\n", + "Model: Gradient Boosting Regression\n", + "Best Parameters: {'model__learning_rate': 0.1, 'model__max_depth': 3, 'model__n_estimators': 200}\n", + "MAE: 7008860.588160669\n", + "MSE: 275375287564661.78\n", + "RMSE: 16594435.439769013\n", + "R²: 0.7533663123848768\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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": [ + "import pandas as pd\n", + "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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Определяем категориальные и числовые столбцы\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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['Population2020']\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": 138, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи классификации:\n", + "Model: Logistic Regression\n", + "Best Parameters: {'model__C': 1, 'model__solver': 'liblinear'}\n", + "Accuracy: 0.8936170212765957\n", + "\n", + "Model: Random Forest Classification\n", + "Best Parameters: {'model__max_depth': None, 'model__n_estimators': 200}\n", + "Accuracy: 0.9574468085106383\n", + "\n", + "Model: Gradient Boosting Classification\n", + "Best Parameters: {'model__learning_rate': 0.01, 'model__max_depth': 5, 'model__n_estimators': 200}\n", + "Accuracy: 0.9148936170212766\n", + "\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Определяем категориальные и числовые столбцы\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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['Population2020'] > df['Population2020'].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": 139, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Результаты для задачи регрессии:\n", + "Model: Linear Regression\n", + "Best Parameters: {}\n", + "MAE: 18355084.060291413\n", + "MSE: 1373553690261338.5\n", + "RMSE: 37061485.26788071\n", + "R²: -0.23019249389605534\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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", + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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': 100}\n", + "MAE: 8207608.10893617\n", + "MSE: 390570064659169.6\n", + "RMSE: 19762845.560778175\n", + "R²: 0.6501946991290963\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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': 3, 'model__n_estimators': 200}\n", + "MAE: 7140734.77304005\n", + "MSE: 290599190343546.25\n", + "RMSE: 17046970.122093435\n", + "R²: 0.7397313659978713\n", + "\n", + "Результаты для задачи классификации:\n", + "Model: Logistic Regression\n", + "Best Parameters: {'model__C': 1, 'model__solver': 'liblinear'}\n", + "Accuracy: 0.8936170212765957\n", + "Precision: 1.0\n", + "Recall: 0.4444444444444444\n", + "F1-score: 0.6153846153846154\n", + "\n" + ] + }, + { + "data": { + "image/png": "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27YtFi9ejMzMTFhaWsLb2xurV69GQkJCgePzr4sCPF9Se+rUKbWriD558gSbN28udvv9+vXDqVOnsH///gL7kpOTVa9fUlKS2j49PT24u7sD+P/f45ePMTExgbOz8yvfn+X5mUXli0MSFcDJyQnh4eF4//330bRpUwwePBjNmjVDdnY2Tp48qVoGBwDNmzdHQEAAfvjhByQnJ8PLywv//e9/sWHDBvTu3RudOnWSLK7+/ftj2rRpeOeddzB+/Hg8ffoUK1euROPGjdUm/c2ePRvHjh1Djx494ODggIcPH2LFihVo0KAB2rdvX2T9X3/9Nfz9/eHh4YFhw4apllWamZm98htLaenp6eGLL77QeNxbb72F2bNnY8iQIXjzzTfx119/YfPmzapviPmcnJxgbm6OVatWwdTUFMbGxmjXrp3W8wEOHz6MFStWYObMmaplnqGhofD29saMGTOwcOFCreoDgJEjR2L16tUIDAzE+fPn0bBhQ0RERODEiRNYvHhxsSfbFiUmJgZz584tUN6yZUv06NGjWO9VKysrfPLJJ/j222/x9ttvo1u3brh06RL27t2LunXrvrJ34PDhwxg7dizee+89NG7cGLm5udi0aRP09fXRt29f1XGtW7fGwYMH8d1338HW1haOjo5o165dgfoUCgUWLVqE4cOH44033sDAgQNRu3ZtXLp0CU+fPi1w/YrimjJlCt577z2EhYVh9OjRWL58Odq3bw83NzeMGDECjRo1QmJiIk6dOoV//vlHda2PqVOn4scff0TXrl0xbtw41bJKe3t7PHnypFg9J1OmTMHOnTvx1ltvqZYnZmRk4K+//kJERARu376NunXrYvjw4Xjy5Ak6d+6MBg0a4M6dO1i2bBlatGihmvPi6uoKb29vtG7dGhYWFjh37hwiIiIwduzYItsvz88sKmcVuUSjuvv777/FiBEjRMOGDYWBgYEwNTUVnp6eYtmyZWrLr3JycsSsWbOEo6OjqFmzprCzsxNBQUFqxwhR9LK3l5fzFbWsUggh/vjjD9GsWTNhYGAgXFxcxI8//lhg2dShQ4dEr169hK2trTAwMBC2trZiwIABasu4CltWKYQQBw8eFJ6ensLIyEgoFArRs2dPce3aNbVj8tt7ednmy0viivLissqiFLWs8tNPPxU2NjbCyMhIeHp6ilOnThW6HPK3334Trq6u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iROxYcMGxMbG4sKFC1i2bJlqIuHo0aNx8+ZNTJkyBdHR0QgPD0dYWJhW5/vaa6/h7t272LJlC2JjY7F06dJCJ3AaGhoiICAAly5dwp9//onx48ejX79+sLa2BgDMmjULISEhWLp0Kf7++2/89ddfCA0NxXfffadVPERUMkwYiMpZrVq1cOzYMdjb26NPnz5o2rQphg0bhszMTFWPw6effooPP/wQAQEB8PDwgKmpKd55551X1rty5Uq8++67+Pjjj9GkSROMGDECGRkZAID69etj1qxZmD59OqysrDB27FgAwJw5czBjxgyEhISgadOm6NatG/bs2QNHR0cAz+cV/Prrr9ixYweaN2+OVatWYf78+Vqd79tvv42JEydi7NixaNGiBU6ePIkZM2YUOM7Z2Rl9+vRB9+7d4evrC3d3d7Vlk8OHD8fatWsRGhoKNzc3eHl5ISwsTBUrEZUtmShqFhURERHRv9jDQERERBoxYSAiIiKNmDAQERGRRkwYiIiISCMmDERERKQREwYiIiLSiAkDERERacSEgYiIiDRiwkBEREQaMWEgIiIijZgwEBERkUZMGIiIiEij/wMlPD2m/SN7cwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: Random Forest Classification\n", + "Best Parameters: {'model__max_depth': None, 'model__n_estimators': 200}\n", + "Accuracy: 1.0\n", + "Precision: 1.0\n", + "Recall: 1.0\n", + "F1-score: 1.0\n", + "\n" + ] + }, + { + "data": { + "image/png": "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sH79evz888/o168fjI2N1eX16tXDjRs3JA2OiIioNMnukijsoo90HsPw8OFDVKtWLUe5SqVCRkaGJEERERGVRoY86FHnFgZ3d3f89ddfOco3b96MBg0aSBIUERER6RedWxi++eYb+Pn54eHDh1CpVNi6dSsiIiKwfv167Nq1qyhiJCIiKhVk/1sKW4c+0rmFoWvXrti5cycOHToEc3NzfPPNN7h+/Tp27tyJ9u3bF0WMREREpYIhXyVRoHkYWrRogYMHD0odCxEREempAk/cdO7cOVy/fh3Aq3ENjRo1kiwoIiKi0siQb2+tc8Lw4MED9OnTBydOnIC1tTUAIC4uDh9++CE2bdqEihUrSh0jERFRqWDId6vUeQzD0KFDkZGRgevXr+PFixd48eIFrl+/DpVKhaFDhxZFjERERFTCdG5hCAsLw8mTJ1GzZk11Wc2aNbF06VK0aNFC0uCIiIhKGz1tICg0nRMGFxeXXCdoysrKgrOzsyRBERERlUbsknjN/PnzMWrUKJw7d05ddu7cOYwZMwbff/+9pMERERGVJtmDHgu76KN8JQzlypWDjY0NbGxsMGjQIISHh6Np06ZQKBRQKBRo2rQpLly4gMGDBxd1vERERPQ/QUFBeP/992FpaQl7e3t069YNERERGtukpqYiICAA5cuXh4WFBXr06IGYmBid95WvLolFixbpXDEREdG7pri7JMLCwhAQEID3338fmZmZ+M9//gNvb2/8888/MDc3BwAEBgZi9+7d+OOPP2BlZYWRI0eie/fuOHHihE5x5Sth8PPz06lSIiKid1FxTw29b98+jcdr166Fvb09zp8/j5YtWyI+Ph6rV69GSEgI2rZtCwAIDg5G7dq1cfr0aXzwwQf53leBJ24CXjVzpKena5QplcrCVElEREQAEhISNB5nDwN4m/j4eACAjY0NAOD8+fPIyMiAl5eXeptatWqhUqVKOHXqlE4Jg86DHpOTkzFy5EjY29vD3Nwc5cqV01iIiIjeVdm3ty7sAry6KtHKykq9BAUFvXXfKpUKY8eOhaenJ+rUqQMAePLkCeRyuXqixWwODg548uSJTsemcwvDpEmTcPToUSxfvhwDBgzAsmXL8PDhQ6xcuRJz587VtToiIiKDIZMVfh6G7Offv39fo9VeW+tCQEAArl69iuPHjxcugDzonDDs3LkT69evR+vW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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: Gradient Boosting Classification\n", + "Best Parameters: {'model__learning_rate': 0.01, 'model__max_depth': 5, 'model__n_estimators': 200}\n", + "Accuracy: 0.9148936170212766\n", + "Precision: 0.8571428571428571\n", + "Recall: 0.6666666666666666\n", + "F1-score: 0.75\n", + "\n" + ] + }, + { + "data": { + "image/png": "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REqjSeJN7O3tcfTo0aIF9C8mDERERBIpz3er5IWbiIiISCtWGIiIiCRSnisMTBiIiIgkUtJ9GEoSEwYiIiKJlOcKA/swEBERkVasMBAREUmETRJERESkFZskiIiI6K3GCgMREZFEZJCgSUKSSKTHhIGIiEgiBjIZDIqYMRT1+cWFTRJERESkFSsMREREEuEoCSIiItKqPI+SYMJAREQkEQPZy6mo29BH7MNAREREWrHCQEREJBWZBE0KelphYMJAREQkkfLc6ZFNEkRERKQVKwxEREQSkf37X1G3oY+YMBAREUmEoySIiIjorcYKAxERkUTe+gs3/e9//yvwBj/44INCB0NERFSWledREgVKGHr06FGgjclkMmRnZxclHiIiItJDBUoYVCpVccdBRERU5pXn21sXqQ9DWloajIyMpIqFiIioTCvPTRI6j5LIzs7GzJkzUb16dZiamuLmzZsAgClTpmDlypWSB0hERFRW5HR6LOqkj3ROGGbPno01a9Zg3rx5kMvl6vkNGzbEihUrJA2OiIiI9IPOCcO6devwyy+/4JNPPoGhoaF6fuPGjXHjxg1JgyMiIipLcpokijrpI537MNy/fx+1a9fONV+lUiEzM1OSoIiIiMqi8tzpUecKg6urK/78889c8zdv3oymTZtKEhQRERHpF50rDN988w38/f1x//59qFQqbN26FREREVi3bh127dpVHDESERGVCbJ/p6JuQx/pXGHo3r07du7ciYMHD8LExATffPMNrl+/jp07d6JTp07FESMREVGZUJ5HSRTqOgytW7dGaGio1LEQERGRnir0hZvOnTuH69evA3jZr6F58+aSBUVERFQWlefbW+ucMNy7dw/9+vXDiRMnYGFhAQCIj4/H+++/j40bN6JGjRpSx0hERFQmlOe7Verch2Ho0KHIzMzE9evX8ezZMzx79gzXr1+HSqXC0KFDiyNGIiIiKmU6VxiOHj2KkydPwsXFRT3PxcUFixYtQuvWrSUNjoiIqKzR0wJBkemcMNjb2+d5gabs7GzY2dlJEhQREVFZxCaJV8yfPx+jR4/GuXPn1PPOnTuHzz//HN9++62kwREREZUlOZ0eizoVVHBwMN555x2YmZnB2toaPXr0QEREhMY6aWlpCAwMRJUqVWBqaopevXrh0aNHOh9bgSoMlStX1sh4UlJS0LJlS1So8PLp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kUQ4SoKIiIi0Ks+jJJgwEBERSaQcd2FgHwYiIiLSjhUGIiIiqZTjEgMTBiIiIomU506PbJIgIiIirVhhICIikghHSRAREZFW5bgLA5skiIiISDtWGIiIiKRSjksMTBiIiIgkwlESRERE9FZjhYGIiEgiHCVBREREWpXjLgxMGIiIiCRTjjMG9mEgIiIirVhhICIikkh5HiXBhIGIiEgqEnR61NN8gU0SREREpB0rDERERBIpx30emTAQERFJphxnDGySICIiIq1YYSAiIpIIR0kQERGRVuX50tBskiAiIiKtmDAQERFJRCbRVFDTpk2DTCbTmOrVqyfV4WhgkwQREZFUSmGURIMGDXDw4EH14woViuernQkDERGRREqj02OFChVgY2NTpH0WBJskiIiIyrDIyEjY2dnByckJn3zyCe7cuVMs+2GFgYiISCIySDBK4t//JyYmasxXKBRQKBQa81q2bIk1a9bAxcUFsbGxmD59Olq3bo2rV6/CzMysaIG8hhUGIiIiiUjZ6dHe3h7m5ubqKTg4ONf+fHx88OGHH8LNzQ3e3t7Ys2cP4uPj8fvvv0t+bKwwEBER6aG7d+9CqVSqH79eXciLhYUF6tati6ioKMnjYYWBiIhIIjkXbirqBABKpVJjKkjCkJycjOjoaNja2kp+bEwYiIiIJFOyV2IYP348jh49ilu3buHkyZPo2bMnDA0N0a9fP+kO6V9skiAiIiqj7t27h379+iEuLg5WVlZo1aoVTp8+DSsrK8n3xYSBiIhIIiV9L4mNGzcWbWc6YMJAREQkkVK40GOJYR8GIiIi0ooVBiIiIomU59tbM2EgIiKSSGncS6KkMGEgIiKSSjnuxMA+DERERKQVKwxEREQSKccFBiYMREREUinPnR7ZJEFERERascJAREQkEY6SICIiIu3KcScGNkkQERGRVqwwEBERSaQcFxiYMBAREUmFoySIiIjorcYKAxERkWSKPkpCXxslmDAQERFJhE0SRERE9FZjwkBERERasUmCiIhIIuW5SYIJAxERkUTK86Wh2SRBREREWrHCQEREJBE2SRAREZFW5fnS0GySICIiIq1YYSAiIpJKOS4xMGEgIiKSCEdJEBER0VuNFQYiIiKJcJQEERERaVWOuzAwYSAiIpJMOc4Y2IeBiIiItGKFgYiISCLleZQEEwYiIiKJsNPjW04IAQBISkos5UiIik/Si8zSDoGoWCQnJQH4/3N5cUpMLPr3hBTbKA5MGAog6d8Pm1s9x1KOhIiICispKQnm5ubFsm25XA4bGxvUcbSXZHs2NjaQy+WSbEsqMlESKVcZp1Kp8ODBA5iZmUGmr7WiciQxMRH29va4e/culEplaYdDJDl+xkuWEAJJSUmws7ODgUHx9fVPS0tDRkaGJNuSy+UwMjKSZFtSYYWhAAwMDFCjRo3SDuOto1QqeTKlco2f8ZJTXJWFVxkZGendl7yUOKySiIiItGLCQERERFoxYSC9o1AoMHXqVCgUitIOhahY8DNOZRE7PRIREZFWrDAQERGRVkwYiIiISCsmDERERKQVEwYiIiLSigkDFauAgAD06NGjtMMgklxAQABkMhlGjBiRa1lgYCBkMhkCAgJKPjCiYsKEgYiokOzt7bFx40a8ePFCPS8tLQ0hISGoWbNmobcrhEBWVpYUIRJJhgkDlZqrV6/Cx8cHpqamqFatGgYMGICnT5+ql2/evBmNGjWCsbExqlSpAk9PT6SkpAAAwsLC8O6778LExAQWFhbw8PDA7du3S+tQ6C3VrFkz2NvbY+vWrep5W7duRc2aNdG0aVP1vPT0dIwZMwbW1tYwMjJCq1atcPbsWfXysLAwyGQy7N27F82bN4dCocDx48ehUqkQHBwMR0dHGBsbo3Hjxti8eXOJHiNRDiYMVCri4+PRoUMHNG3aFOfOncO+ffvw6NEj9OnTBwAQGxuLfv36YfDgwbh+/TrCwsLg5+en/uXVo0cPtG3bFpcvX8apU6cwfPhw3hiMSsXgwYOxevVq9eNVq1Zh0KBBGutMmDABW7Zswdq1a3HhwgXUrl0b3t7eePbsmcZ6kyZNwty5c3H9+nW4ubkhODgY69atw9KlS3Ht2jUEBQWhf//+OHr0aIkcG5EGQVSM/P39Rffu3XPNnzlzpvDy8tKYd/fuXQFAREREiPPnzwsA4tatW7meGxcXJwCIsLCw4gqbSKucz/bjx4+FQqEQt27dErdu3RJGRkbiyZMnonv37sLf318kJyeLihUrig0bNqifm5GRIezs7MS8efOEEEIcOXJEABDbt29Xr5OWliYqVaokTp48qbHfIUOGiH79+pXMQRK9gnerpFJx6dIlHDlyBKamprmWRUdHw8vLCx07dkSjRo3g7e0NLy8v9O7dG5UrV4alpSUCAgLg7e2NTp06wdPTE3369IGtrW0pHAm97aysrNC1a1esWbMGQgh07doVVatWVS+Pjo5GZmYmPDw81PMqVqyId999F9evX9fYVosWLdT/joqKQmpqKjp16qSxTkZGhkZzB1FJYcJApSI5ORm+vr7473//m2uZra0tDA0NERoaipMnT+LAgQNYtGgRvvrqK5w5cwaOjo5YvXo1xowZg3379mHTpk34+uuvERoaivfee68UjobedoMHD8aoUaMAAIsXLy70dkxMTNT/Tk5OBgDs3r0b1atX11iP96Cg0sA+DFQqmjVrhmvXrqFWrVqoXbu2xpRz0pTJZPDw8MD06dNx8eJFyOVybNu2Tb2Npk2bYvLkyTh58iQaNmyIkJCQ0jocest17twZGRkZyMzMhLe3t8YyZ2dnyOVynDhxQj0vMzMTZ8+ehaura77bdHV1hUKhwJ07d3L9jdjb2xfbsRDlhxUGKnYJCQkIDw/XmDd8+HAsX74c/fr1w4QJE2BpaYmoqChs3LgRK1aswLlz53Do0CF4eXnB2toaZ86cwZMnT1C/fn3ExMTgl19+wQcffAA7OztEREQgMjISAwcOLJ0DpLeeoaGhunnB0NBQY5mJiQlGjhyJL7/8EpaWlqhZsybmzZuH1NRUDBkyJN9tmpmZYfz48QgKCoJKpUKrVq2QkJCAEydOQKlUwt/fv1iPieh1TBio2IWFheVqcx0yZAhOnDiBiRMnwsvLC+np6XBwcEDnzp1hYGAApVKJY8eOYeHChUhMTISDgwO+++47+Pj44NGjR7hx4wbWrl2LuLg42NraIjAwEJ9++mkpHSERoFQq8102d+5cqFQqDBgwAElJSWjRogX279+PypUrv3GbM2fOhJWVFYKDg3Hz5k1YWFigWbNm+M9//iN1+ERa8fbWREREpBX7MBAREZFWTBiIiIhIKyYMREREpBUTBiIiItKKCQMRERFpxYSBiIiItGLCQERERFoxYSAqIwICAtCjRw/143bt2uGLL74o8TjCwsIgk8kQHx+f7zoymQzbt28v8DanTZuGJk2aFCmuW7duQSaT5bqqKBFJgwkDUREEBARAJpNBJpNBLpejdu3amDFjBrKysop931u3bsXMmTMLtG5BvuSJiN6El4YmKqLOnTtj9erVSE9Px549exAYGIiKFSti8uTJudbNyMiAXC6X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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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+PDhKigocL+mIeTJVdU0PpZiQDEAAP7V6ivtqlWr/FhG6HM/lmJAMQAAfuX1CsX+MHfuXGVmZioyMlJDhw7V+vXrW3XcokWLZLFYNHr0aP8W6ANVPJYCACAggh5uFi9erEmTJmn69OnatGmT+vXrp5EjR+rgwYOnPG7Xrl164IEHdNFFFwWo0tPnchl3bykeSwEA4F9BDzezZ8/W+PHjNW7cOPXu3Vvz5s1TdHS0FixYcNJjnE6nbr75Zs2YMUNZWVkBrPb0HKl3ypjGPxNuAADwr6CGm7q6Om3cuNGjL5XVatWIESOUm5t70uMee+wxpaSk6Pbbb//O76itrZXD4fD4CbTm1gthVosiI4KeJwEACGlBvdKWlJTI6XQqNTXVY3tqaqqKi4tbPGb16tX685//rPnz57fqO2bNmqX4+Hj3T0ZGxveu21uVTa0XYmxhzCgDAMDPTivcfPzxx/qv//ov5eTkaO/evZKkN954Q6tXr/ZpccerrKzULbfcovnz5ys5OblVx0yZMkUVFRXunz179vi1xpY037mJjYwI+HcDANDeeD0A5H/+5390yy236Oabb9bmzZtVW1srSaqoqNDMmTO1dOnSVn9WcnKywsLCdODAAY/tBw4cUFpa2gn75+fna9euXRo1apR7m8vlavxFwsO1fft2ZWdnexxjt9tlt9tbXZM/HJspFRbUOgAAaA+8vnPzxBNPaN68eZo/f74iIo7dibjwwgu1adMmrz7LZrNp0KBBWrlypXuby+XSypUrlZOTc8L+5557rr744gvl5eW5f6677jpdeumlysvLC8ojp9aopCM4AAAB4/XVdvv27br44otP2B4fH6/y8nKvC5g0aZLGjh2rwYMHa8iQIZozZ46qq6s1btw4SdKtt96qLl26aNasWYqMjFSfPn08jk9ISJCkE7afSZofS3XgsRQAAH7ndbhJS0vTzp07lZmZ6bF99erVpzUte8yYMTp06JCmTZum4uJi9e/fX8uWLXMPMi4qKpLV2rZnGDU/lurAYykAAPzO63Azfvx43XfffVqwYIEsFov27dun3NxcPfDAA5o6deppFTFhwgRNmDChxfe+q+3DwoULT+s7A+lYuOGxFAAA/ub11Xby5MlyuVy6/PLLdeTIEV188cWy2+164IEHNHHiRH/U2ObRegEAgMDx+mprsVj08MMP67e//a12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RRddZK6//vrAFNuGeXuea2trzeDBg80111xjVq9ebQoLC82qVatMXl5egCtvW7w9z2+++aax2+3mzTffNIWFhWb58uWmc+fO5v777w9w5W3L0qVLzcMPP2zee+89I8n87W9/O+X+BQUFJjo62kyaNMl89dVX5oUXXjBhYWFm2bJlfq2TcOOFIUOGmHvuucf92ul0mvT0dDNr1qwW97/xxhvNtdde67Ft6NCh5le/+pVf62zrvD3Px2toaDCxsbHmtdde81eJIeF0znNDQ4MZPny4efXVV83YsWMJN63g7Xl++eWXTVZWlqmrqwtUiSHB2/N8zz33mMsuu8xj26RJk8yFF17o1zpDSWvCze9+9ztz3nnneWwbM2aMGTlypB8rM4bHUq1UV1enjRs3asSIEe5tVqtVI0aMUG5ubovH5ObmeuwvSSNHjjzp/ji983y8I0eOqL6+XomJif4qs8073fP82GOPKSUlRbfffnsgymzzTuc8v//++8rJydE999yj1NRU9enTRzNnzpTT6QxU2W3O6Zzn4cOHa+PGje5HVwUFBVq6dKmuueaagNTcXgTrOtjuGmeerpKSEjmdTqWmpnpsT01N1bZt21o8pri4uMX9i4uL/VZnW3c65/l4Dz74oNLT00/4DwrHnM55Xr16tf785z8rLy8vABWGhtM5zwUFBfr3v/+tm2++WUuXLtXOnTt19913q76+XtOnTw9E2W3O6Zznm266SSUlJfrBD34gY4waGhp055136qGHHgpEye3Gya6DDodDR48eVVRUlF++lzs3CClPPfWUFi1apL/97W+KjIwMdjkho7KyUrfccovmz5+v5OTkYJcT0lwul1JSUvTKK69o0KBBGjNmjB5++GHNmzcv2KWFlFWrVmnmzJl66aWXtGnTJr333ntasmSJHn/88WCXBh/gzk0rJScnKywsTAcOHPDYfuDAAaWlpbV4TFpamlf74/TOc7Nnn31WTz31lFasWKHzzz/fn2W2ed6e5/z8fO3atUujRo1yb3O5XJKk8PBwbd++XdnZ2f4tug06nX+fO3furIiICIWFhbm39erVS8XFxaqrq5PNZvNrzW3R6ZznqVOn6pZbbtEvf/lLSVLfvn1VXV2tO+64Qw8//LCsVv7f3xdOdh2Mi4vz210biTs3rWaz2TRo0CCtXLnSvc3lcmnlypXKyclp8ZicnByP/SXpgw8+OOn+OL3zLElPP/20Hn/8cS1btkyDBw8ORKltmrfn+dxzz9UXX3yhvLw89891112nSy+9VHl5ecrIyAhk+W3G6fz7fOGFF2rnzp3u8ChJO3bsUOfOnQk2J3E65/nIkSMnBJjmQGlouegzQbsO+nW4cohZtGiRsdvtZuHChearr74yd9xxh0lISDDFxcXGGGNuueUWM3nyZPf+a9asMeHh4ebZZ581W7duNdOnT2cqeCt4e56feuopY7PZzLvvvmv279/v/qmsrAzWr9AmeHuej8dsqdbx9jwXFRWZ2NhYM2HCBLN9+3bzz3/+06SkpJgnnngiWL9Cm+DteZ4+fbqJjY01f/3rX01BQYH5v//7P5OdnW1uvPHGYP0KbUJlZaXZvHmz2bx5s5FkZs+ebTZv3mx2795tjDFm8uTJ5pZbbnHv3zwV/Le//a3ZunWrmTt3LlPBz0QvvPCC6datm7HZbGbIkCFm3bp17vcuueQSM3bsWI/93377bXPOOecYm81mzjvvPLNkyZIAV9w2eXOeu3fvbiSd8DN9+vTAF97GePvv87cRblrP2/O8du1aM3ToUGO3201WVpZ58sknTUNDQ4Crbnu8Oc/19fXm0UcfNdnZ2SYyMtJkZGSYu+++2xw+fDjwhbchH374YYt/3zaf27Fjx5pLLrnkhGP69+9vbDabycrKMn/5y1/8XqfFGO6/AQCA0MGYGwAAEFIINwAAIKQQbgAAQEgh3AAAgJBCuAEAACGFcAMAAEIK4QYAAIQUwg0AAAgphBsAHhYuXKiEhIRgl3HaLBaL/v73v59yn9tuu02jR48OSD0AAo9wA4Sg2267TRaL5YSfnTt3Brs0LVy40F2P1WpV165dNW7cOB08eNAnn79//35dffXVkqRdu3bJYrEoLy/PY5/nn39eCxcu9Mn3ncyjjz7q/j3DwsKUkZGhO+64Q2VlZV59DkEM8F54sAsA4B9XXXWV/vKXv3hs69SpU5Cq8RQXF6ft27fL5XLps88+07hx47Rv3z4tX778e392Wlrad+4THx//vb+nNc477zytWLFCTqdTW7du1S9+8QtVVFRo8eLFAfl+oL3izg0Qoux2u9LS0jx+wsLCNHv2bPXt21cxMTHKyMjQ3XffraqqqpN+zmeffaZLL71UsbGxiouL06BBg7Rhwwb3+6tXr9ZFF12kqKgoZWRk6N5771V1dfUpa7NYLEpLS1N6erquvvpq3XvvvVqxYoWOHj0ql8ulxx57TF27dpXdblf//v21bNky97F1dXWaMGGCOnfurMjISHXv3l2zZs3y+Ozmx1I9evSQJA0YMEAWi0X/7//9P0med0NeeeUVpaeny+VyedR4/fXX6xe/+IX79T/+8Q8NHDhQkZGRysrK0owZM9TQ0HDK3zM8PFxpaWnq0qWLRowYoZ/+9Kf64IMP3O87nU7dfvvt6tGjh6KiotSzZ089//zz7vcfffRRvfbaa/rHP/7hvgu0atUqSdKePXt04403KiEhQYmJibr++uu1a9euU9YDtBeEG6CdsVqt+uMf/6gtW7botdde07///W/97ne/O+n+N998s7p27apPP/1UGzdu1OTJkxURESFJys/P11VXXaUf//jH+vzzz7V48WKtXr1aEyZM8KqmqKgouVwuNTQ06Pnnn9dzzz2nZ599Vp9//rlGjhyp6667Tl9//bUk6Y9//KPef/99vf3229q+fbvefPNNZWZmtvi569evlyStWLFC+/fv13vvvXfCPj/96U9VWlqqDz/80L2trKxMy5Yt08033yxJ+vjjj3Xrrbfqvvvu01dffaU//elPWrhwoZ588slW/467du3S8uXLZbPZ3NtcLpe6du2qd955R1999ZWmTZumhx56SG+//bYk6YEHHtCNN96oq666Svv379f+/fs1fPhw1dfXa+TIkYqNjdXHH3+sNWvWqEOHDrrqqqtUV1fX6pqAkOX3vuMAAm7s2LEmLCzMxMTEuH9+8pOftLjvO++8Y5KSktyv//KXv5j4+Hj369jYWLNw4cIWj7399tvNHXfc4bHt448/Nlar1Rw9erTFY47//B07dphzzjnHDB482BhjTHp6unnyySc9jrngggvM3XffbYwxZuLEieayyy4zLperxc+XZP72t78ZY4wpLCw0kszmzZs99hk7dqy5/vrr3a+vv/5684tf/ML9+k9/+pNJT083TqfTGGPM5ZdfbmbOnOnxGW+88Ybp3LlzizUYY8z06dON1Wo1MTExJjIy0kgykszs2bNPeowxxtxzzz3mxz/+8Ulrbf7unj17epyD2tpaExUVZZYvX37KzwfaA8bcACHq0ksv1csvv+x+HRMTI6nxLsasWbO0bds2ORwONTQ0qKamRkeOHFF0dPQJnzNp0iT98pe/1BtvvOF+tJKdnS2p8ZHV559/rjfffNO9vzFGLpdLhYWF6tWrV4u1VVRUqEOHDnK5XKqpqdEPfvADvfrqq3I4HNq3b58uvPBCj/0vvPBCffbZZ5IaHyldccUV6tmzp6666ir98Ic/1JVXXvm9ztXNN9+s8ePH66WXXpLdbtebb76pn/3sZ7Jare7fc82aNR53apxO5ynPmyT17NlT77//vmpqavTf//3fysvL08SJEz32mTt3rhYsWKCioiIdPXpUdXV16t+//ynr/eyzz7Rz507FxsZ6bK+pqVF+fv5pnAEgtBBugBAVExOjs846y2Pbrl279MMf/lB33XWXnnzySSUmJmr16tW6/fbbVVdX1+JF+tFHH9VNN92kJUuW6F//+pemT5+uRYsW6Uc/+pGqqqr0q1/9Svfee+8Jx3Xr1u2ktcXGxmrTpk2yWq3q3LmzoqKiJEkOh+M7f6+BAweqsLBQ//rXv7RixQrdeOONGjFihN59993vPPZkRo0aJWOMlixZogsuuEAff/yx/vCHP7jfr6qq0owZM3TDDTeccGxkZORJP9dms7n/GTz11FO69tprNWPGDD3++OOSpEWLFumBBx7Qc889p5ycHMXGxuqZZ57RJ598csp6q6qqNGjQII9Q2exMGTQOBBPhBmhHNm7cKJfLpeeee859V6J5fMepnHPOOTrnnHN0//336+c//7n+8pe/6Ec/+pEGDhyor7766oQQ9V2sVmuLx8TFxSk9PV1r1qzRJZdc4t6+Zs0aDRkyxGO/MWPGaMyYMfrJT36iq666SmVlZUpMTPT4vObxLU6n85T1REZG6oYbbtCbb76pnTt3qmfPnho4cKD7/YEDB2r79u1e/57He+SRR3TZZZfprrvucv+ew4cP19133+3e5/g7Lzab7YT6Bw4cqMWLFyslJUVxcXHfqyYgFDGgGGhHzjrrLNXX1+uFF15QQUGB3njjDc2bN++k+x89elQTJkzQqlWrtHv3bq1Zs0affvqp+3HTgw8+qLVr12rChAnKy8vT119/rX/84x9eDyj+tt/+9rf6/e9/r8WLF2v79u2aPHmy8vLydN9990mSZs+erb/+9a/atm2bduzYoXfeeUdpaWktLjyYkpKiqKgoLVu2TAcOHFBFRcVJv/fmm2/WkiVLtGDBAvdA4mbTpk3T66+/rhkzZmjLli3aunWrFi1apEceecSr3y0nJ0fnn3++Zs6cKUk6++yztWHDBi1fvlw7duzQ1KlT9emnn3ock5mZqc8//1zbt29XSUmJ6uvrdfPNNys5OVnXX3+9Pv74YxUWFmrVqlW699579c0333hVExCSgj3oB4DvtTQItdns2bNN586dTVRUlBk5cqR5/fXXjSRz+PBhY4zngN/a2lrzs5/9zGRkZBibzWbS09PNhAkTPAYLr1+/3lxxxRWmQ4cOJiYmxpx//vknDAj+tuMHFB/P6XSaRx991HTp0sVERESYfv36mX/961/u91955RXTv39/ExMTY+Li4szll19uNm3a5H5f3xpQbIwx8+fPNxkZGcZqtZpLLrnkpOfH6XSazp07G0kmPz//hLqWLVtmhg8fbqKiokxcXJwZMmSIeeWVV076e0yfPt3069fvhO1//etfjd1uN0VFRaampsbcdtttJj4+3iQkJJi77rrLTJ482eO4gwcPus+vJPPhhx8aY4zZv3+/ufXWW01ycrKx2+0mKyvLjB8/3lRUVJy0JqC9sBhjTHDjFQAAgO/wWAoAAIQUwg0AAAgphBsAABBSCDcAACCkEG4AAEBIIdwAAICQQrgBAAAhhXADAABCCuEGAACEFMINAAAIKYQbAAAQUv4/dSyKdhHhmikAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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['Population2020']\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['Population2020'] > df['Population2020'].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": 140, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Оценка смещения и дисперсии для задачи регрессии:\n", + "Model: Linear Regression\n", + "MAE (Cross-Validation): Mean = 29840383.42279941, Std = 27144603.41689917\n", + "R² (Cross-Validation): Mean = -21089.965883559045, Std = 41156.25923282549\n", + "\n", + "Model: Random Forest Regression\n", + "MAE (Cross-Validation): Mean = 26665786.071446814, Std = 46081535.77323325\n", + "R² (Cross-Validation): Mean = -363.4188861822276, Std = 719.8191512710059\n", + "\n", + "Model: Gradient Boosting Regression\n", + "MAE (Cross-Validation): Mean = 25735773.24094847, Std = 45055407.0307318\n", + "R² (Cross-Validation): Mean = -457.52444446928376, Std = 910.2095956390277\n", + "\n", + "Оценка смещения и дисперсии для задачи классификации:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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: Logistic Regression\n", + "Accuracy (Cross-Validation): Mean = 0.8553191489361703, Std = 0.05613151471605499\n", + "Precision (Cross-Validation): Mean = 0.6947368421052632, Std = 0.40276055725703136\n", + "Recall (Cross-Validation): Mean = 0.40555555555555556, Std = 0.4034381559533162\n", + "F1-score (Cross-Validation): Mean = 0.3924603174603175, Std = 0.31860013632010536\n", + "\n", + "Model: Random Forest Classification\n", + "Accuracy (Cross-Validation): Mean = 0.8340425531914895, Std = 0.21714639697315868\n", + "Precision (Cross-Validation): Mean = 0.8457142857142858, Std = 0.3085714285714286\n", + "Recall (Cross-Validation): Mean = 0.7277777777777777, Std = 0.18604891166267057\n", + "F1-score (Cross-Validation): Mean = 0.7121367521367521, Std = 0.20909441956885236\n", + "\n", + "Model: Gradient Boosting Classification\n", + "Accuracy (Cross-Validation): Mean = 0.8340425531914895, Std = 0.2179786974445225\n", + "Precision (Cross-Validation): Mean = 0.8486486486486486, Std = 0.3027027027027027\n", + "Recall (Cross-Validation): Mean = 0.725, Std = 0.2549509756796392\n", + "F1-score (Cross-Validation): Mean = 0.7126265039308517, Std = 0.21811324450544675\n", + "\n" + ] + } + ], + "source": [ + "import pandas as pd\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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Определяем категориальные и числовые столбцы\n", + "\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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['Population2020']\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['Population2020'] > df['Population2020'].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": 141, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABJsAAAI+CAYAAAAb9gt6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACJJElEQVR4nOzdeZxO5eP/8fes92xmGIYZGUZU1tDIEoVMM5ZIWUILErJmKUuLLeUThUKWFlqQNiplXxOVbEXImmLGFobBzJi5fn/4zfnObWaY0TG3Ma/n4+Fh7nOuc851zn3d51z3+z6LmzHGCAAAAAAAALCBu6srAAAAAAAAgJsHYRMAAAAAAABsQ9gEAAAAAAAA2xA2AQAAAAAAwDaETQAAAAAAALANYRMAAAAAAABsQ9gEAAAAAAAA2xA2AQAAAAAAwDaETQAAAAAAALANYRNcomPHjgoICMjVZR44cEBubm6aOXNmri73ZvbZZ58pODhYZ8+edXVVslSrVi0NHDgw2+XPnj2rp59+WqGhoXJzc1Pfvn2vX+VgcXNz0/Dhw11djVzzX/ZHq1atkpubm1atWmV7vQAgv8rJceiXX36Rt7e3/vrrL9vrMXXqVJUsWVKJiYnZnubjjz9WuXLl5OXlpYIFC9peJ2TUsWNHRUREuLoauap+/fqqX7/+NU0bERGhjh072lof3PgIm1xs5syZcnNzk5ubm9auXZthvDFG4eHhcnNz04MPPuiCGuZcSkqKihcvLjc3Ny1cuNDV1bHFuXPnNHz48Ovy5S7t/c/s3zPPPGP78uySkpKiYcOGqXfv3k7BYUREhNzc3BQVFZXpdO+++661fr/++mumZQYOHCg3Nzc9+uijmY5P+6Ke1b///e9/VtlBgwZp8uTJiouLy9Z6vfbaa5o5c6a6d++ujz/+WE888US2prtWadsr7Z+/v79q1Kihjz766LouF5cMHz5cbm5ucnd3199//51hfHx8vHx9feXm5qZevXq5oIYAkD3p+5Rubm7y9PTULbfcoo4dO+rQoUOurt5N5cUXX1S7du1UqlQpa1j9+vWdtr+vr6/uvPNOTZgwQampqU7TP/HEE6pbt65q1qypevXqaceOHda4jh07KikpSdOmTctWXXbu3KmOHTuqTJkyevfddzV9+nR7VjILacfNtH9eXl6KiIhQnz59dOrUqeu6bDj3gUeNGpVpmccee0xubm65/sM+cDlPV1cAl/j4+Gj27NmqW7eu0/DVq1frn3/+kcPhcFHNcm7FihWKjY1VRESEZs2apcaNG7u6Sv/ZuXPnNGLECEm65kT/Sh544AE9+eSTGYbffvvtti/LLt9++6127dqlrl27Zhjn4+OjlStXKi4uTqGhoU7jZs2aJR8fH124cCHT+RpjNGfOHEVEROjbb7/VmTNnVKBAgUzLtmvXTk2aNMkwvFq1atbfDz30kAIDA/XOO+9o5MiRV12vFStWqFatWho2bNhVy9qlatWqGjBggCQpNjZW7733njp06KDExER16dIl1+rhSufPn5enp+sOSQ6HQ3PmzMlwFtxXX33lohoBwLUZOXKkSpcurQsXLuinn37SzJkztXbtWm3btk0+Pj6url6et2XLFi1btkzr1q3LMK5EiRIaPXq0JOn48eOaPXu2+vXrp2PHjunVV1+1yr388stWH69v377q0aOHVq5cKelSH6pDhw4aN26cevfuLTc3tyvWZ9WqVUpNTdVbb72lsmXL2rWaVzVlyhQFBAQoISFBy5cv18SJE7Vp06ZMfzy/Gb377rsZQsTc5OPjozlz5uill15yGp6QkKCvv/6azzpuCJzZdINo0qSJPv/8c128eNFp+OzZsxUZGZnhC/uN7JNPPtFdd92lfv36af78+UpISHB1lW54t99+ux5//PEM/2rUqHHF6c6dO5fp8IsXLyopKek/1elq79uMGTNUp04d3XLLLRnG1alTRwEBAZo7d67T8H/++Uc//PCDmjZtmuV8V61apX/++UcffPCBLl68eMUv+3fddVem261ixYpWGXd3d7Vq1UofffSRjDFXXCdJOnr0qK2noGfnvbjlllusuj///PNau3atAgICNH78eNvqkV2u+rz6+Pi4NGxq0qSJ5syZk2H47Nmzr9heAeBG07hxYz3++ON6+umn9d577+m5557T3r179c0337i6atdFVn2h62XGjBkqWbKkatWqlWFcUFCQdTzv27ev1qxZo1KlSmnixIlKSUmxyqX/MdEYI3d3569kbdq00V9//WUFUFdy9OhRSbK175KdbdqqVSs9/vjj6tatmz777DM9+uij+vHHH/XLL7/YVo/sSE1NzfIHzOvJy8vLpScDNGnSRH/88Ye2bt3qNPzrr79WUlKSHnjgARfVDPg/hE03iHbt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sqW2b9+u3r17KyIiQkePHtXSpUt18OBB63V0dLRCQkI0ePBgFSxYUAcOHLjq5Wnbt2/Xvffeq8DAQA0cOFBeXl6aNm2a6tevr9WrV6tmzZpO5Xv37q1ChQpp2LBhOnDggCZMmKBevXplOLsuK/fdd59KlCih2bNnW/ufuXPnKiAgINMzm7LbJowxeuihh7R27Vo988wzKl++vObNm6cOHTpkus7Xsi9JSkpSTEyMEhMT1bt3b4WGhurQoUNasGCBTp06paCgoGxtAwA3p7RQ5/JjSmautk+XpKFDh2rUqFFq0qSJmjRpok2bNik6Ovo/nVGdk75qZn2h1NRUNW/eXGvXrlXXrl1Vvnx5/f777xo/frz+/PNPzZ8/35r+6aef1ieffKL27dvrnnvu0YoVK7J9BuuhQ4d08ODBK/Z/Lpf2Q9TlZx5t2LBBbdq00YwZM3T33XdnmO6uu+7KNJRJb8KECfroo480b94867K2tP7p8OHDNWLECEVFRal79+7atWuXpkyZog0bNjj1GaQr9y9zsp6ScztbsWKFGjdurMjISA0bNkzu7u6aMWOG7r//fv3www/WGfybN29Wo0aNFBYWphEjRiglJUUjR460fuy93IoVK/TZZ5+pV69eKlKkiCIiInTkyBHVqlXLCnJCQkK0cOFCde7cWfHx8dYDX95991316dNHrVq10rPPPqsLFy7ot99+088//2x9X3nmmWf0xRdfqFevXqpQoYJOnDihtWvXaseOHVm+98YYNW/eXCtXrlTnzp1VtWpVLV68WM8//7wOHTqU4Wz1tWvX6quvvlKPHj1UoEABvf3222rZsqUOHjyowoULZ2ubt2vXTp988on+97//yc3NTcePH9eSJUv08ccfZxpcZbdNvP/+++rWrZvuuece9e3bV/v27VPz5s0VHBys8PBwa345+dxlVpfRo0fr6aefVo0aNRQfH69ff/1VmzZt4qysm4mBS82YMcNIMhs2bDCTJk0yBQoUMOfOnTPGGNO6dWvToEEDY4wxpUqVMk2bNrWm++GHH4wkM2vWLKf5LVq0KMPwtPml161bN+Pn52cuXLhgDatXr56RZD766CNrWGJiogkNDTUtW7bM1vo8+OCDpk6dOtbr6dOnG09PT3P06FGnch06dDCSTO/eva1hqamppmnTpsbb29scO3bMGGPMs88+awIDA83F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gYGBOnbsmN5++23t37/fKTRM60tkdtl4mtOnT+vChQs6f/58pk/Sy+rpepf3W44dO6ZTp05p+vTpmj59eqbTpLWBQYMGadmyZapRo4bKli2r6OhotW/fXnXq1LHKjhkzRh06dFB4eLgiIyPVpEkTPfnkkxm+t6T3119/qXjx4hmeoJxVX/Hyfot0qe+Sk36LdKmv/eabb6pfv35at25dlvfbym6byOoz7uXllWH9s/u5y8zIkSP10EMP6fbbb1elSpXUqFEjPfHEE9ZloLg55MuwKSEhQVWqVNFTTz1l3X8nJ5577rkMZ4A0bNgw0+utc6p9+/bq0qWL4uLi1Lhx4yyfLJGamqqiRYtmecZH2of+1KlTqlevngIDAzVy5EiVKVNGPj4+2rRpkwYNGpThkZ3pz25I72qhgiSrLul31unt27fvijvpzBQtWlRbtmzR4sWLtXDhQi1cuFAzZszQk08+memNeHPKzc0t03W7/IaUWUnbfs8991yWN7228zG06Q/iORlnx/zTS7uW/OTJk1f8pbRmzZoqU6aM+vbtq/3792d5loh06deRxMREvfnmm3rzzTczjJ81a1amIW92nTp1SkWKFLnm6XMip+9FkSJFrNAsJiZG5cqV04MPPqi33npL/fv3l5T9z7wd9U1r1x9//HGm98pKfz+svn37qlmzZpo/f74WL16sl19+WaNHj9aKFStUrVo1ubm56YsvvtBPP/2kb7/9VosXL9ZTTz2lN998Uz/99FOGEOZa/Zd9V3rt27fXlClTVKBAAT366KMZwqTr5b/uS95880117NhRX3/9tZYsWaI+ffpo9OjR+umnn656NgOAm0uNGjVUvXp1SZfOoKlbt67at2+vXbt2KSAgQOvWrctw5vT+/fsVERFx1X16TmQVklzex8ppXzWzY2xqaqoqV66scePGZbrM9PeZ+S/S938y4+/v7/QjWJ06dXTXXXfphRdeyPT+q1dy8uRJ+fn52dK/u5prWcZ9991n9auaNWumypUr67HHHtPGjRvl7u5uvW9jx45V1apVM51HQEDANT1JLqt+y+OPP55luJUWYpQvX167du3SggULtGjRIn355Zd65513NHToUKuf2aZNG917772aN2+elixZorFjx+r111/XV199la172GaHXf2Wdu3aaciQIerSpYsKFy6s6OhoO6qXLf/lc3ff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6OhoeXl5affu3fr888/11ltvqVWrVrrnnntUqFAhdejQQX369JGbm5s+/vjjHJ+ieTWzZs1S1apVszzboHnz5urdu7c2bdpkPTLUx8dHixYtUocOHVSzZk0tXLhQ3333nV544QXrkqCnn35a//77r+6//36VKFFCf/31lyZOnKiqVatav/YMHjxYc+bMUePGjdWnTx8FBwfrww8/1P79+/Xll19e8TKYp556SuPGjVNMTIw6d+6so0ePaurUqapYsaLTPQN8fX1VoUIFzZ07V7fffruCg4NVqVIlVapUSZMnT1bdunVVuXJldenSRbfeequOHDmi9evX659//tHWrVuvuv3+/PNPp7NA0hQrVuw/Pf5z7Nixaty4sWrXrq3OnTvr/PnzmjhxooKCgjR8+PBrnq+Pj4+io6O1bNky6zHxWSlVqtRVlzV79mzrkbGZadKkiTw9PTVr1iyn+3Nt2rQp0+1WpkwZ1a5d23q9dOlSlSxZMseXAKTp2rWrpk2bpo4dO2rjxo2KiIjQF198oR9//FETJkzIcH2+HRo3bqxKlSpp3Lhx6tmzZ7Y/88WKFdOzzz6rN998U82bN1ejRo20detWLVy4UEWKFMnWL0+BgYGaMmWKnnjiCd11111q27atQkJCdPDgQX333XeqU6eOJk2apD///FMNGzZUmzZtVKFCBXl6emrevHk6cuSI2rZtK0n68MMP9c477+jhhx9WmTJldObMGb377rsKDAy8YuA5atQoLV26VHXr1lWPHj3k6empadOmKTExUWPGjLFtO2fm2WefvWqZ7LaJZs2aqU6dOho8eLAOHDigChUq6KuvvsrQkZV0zfuSFStWqFevXmrdurVuv/12Xbx4UR9//LHV+QaA559/Xq1bt9bMmTOzfBhIdvbpISEheu655zR69Gg9+OCDatKkiTZv3mwdY9KLjo5WyZIl1blzZz3//PPy8PDQBx98YB1P0tjRV33iiSf02Wef6ZlnntHKlStVp04dpaSkaOfOnfrss8+0ePFiVa9eXVWrVlW7du30zjvv6PTp07rnnnu0fPnybJ9BI116qMu8efOyfS/IChUqqEmTJnrvvff08ssvZ+ux9hs3btS///6b6Y3DsyMkJERDhgzRiBEj1KhRIzVv3ly7du3SO++8o7vvvtvpYUB28fLy0rPPPqvnn39eixYtUqNGjfTe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ANsQNgEAAAAAAMA2hE0AAAAAAACwDWETAAAAAAAAbEPYBAAAAAAAANsQNgEAAAAAAMA2hE0AAAAAAACwDWETAAAAAAAAbEPYBAAAAAAAANsQNgEAANygvvvuO9WsWVO+vr4qVKiQWrRo4TT+4MGDatq0qfz8/FS0aFE9//zzunjxolOZVatW6a677pLD4VDZsmU1c+bMDMuZPHmyIiIi5OPjo5o1a+qXX35xGn/hwgX17NlThQsXVkBAgFq2bKkjR47YvboAAOAmQdgEAABwA/ryyy/1xBNPqFOnTtq6dat+/PFHtW/f3hqfkpKipk2bKikpSevWrdOHH36omTNnaujQoVaZ/fv3q2nTpmrQoIG2bNmivn376umnn9bixYutMnPnzlX//v01bNgwbdq0SVWqVFFMTIyOHj1qlenXr5++/fZbff7551q9erUOHz6sRx55JHc2BAAAyHPcjDHG1ZXILfHx8QoKCtLp06cVGBjo6uoAyKaEhAQFBARIks6ePSt/f38X1wg3O9qc/TgG58zFixcVERGhESNGqHPnzpmWWbhwoR588EEdPnxYxYoVkyRNnTpVgwYN0rFjx+Tt7a1Bgwbpu+++07Zt26zp2rZtq1OnTmnRokWSpJo1a+ruu+/WpEmTJEmpqakKDw9X7969NXjwYJ0+fVohISGaPXu2WrVqJUnauXOnypcvr/Xr16tWrVrZWifagH3YRwEAcsIVx2DPXFkKAAAAsm3Tpk06dOiQ3N3dVa1aNcXFxalq1aoaO3asKlWqJElav369KleubAVNkhQTE6Pu3btr+/btqlatmtavX6+oqCinecfExKhv376SpKSkJG3cuFFDhgyxxru7uysqKkrr16+XJG3cuFHJyclO8ylXrpxKlix5xbApMTFRiYmJ1uv4+HhJUnJyspKTk//D1kH67cf2BABcjSuOE4RNAAAAN5h9+/ZJkoYPH65x48YpIiJCb775purXr68///xTwcHBiouLcwqaJFmv4+LirP8zKxMfH6/z58/r5MmTSklJybTMzp07rXl4e3urYMGCGcqkLSczo0eP1ogRIzIMX7Jkifz8/LKxFZCVCxcuWH8vXrxYPj4+LqwNAOBGd+7cuVxfJmETAABALhk8eLBef/31K5bZsWOHUlNTJUkvvviiWrZsKUmaMWOGSpQooc8//1zdunW77nX9r4YMGaL+/ftbr+Pj4xUeHq7o6Gguo/uPEhISrL9jYmK4jA4AcEVpZxfnJsImAACAXDJgwAB17NjximVuvfVWxcbGSpIqVKhgDXc4HLr11lt18OBBSVJoaGiGp8alPSEuNDTU+v/yp8YdOXJEgYGB8vX1lYeHhzw8PDItk34eSUlJOnXqlNPZTenLZMbhcMjhcGQY7uXlJS8vrytuA1xZ+u3H9gQAXI0rjhM8jQ4AACCXhISEqFy5clf85+3trcjISDkcDu3atcuaNjk5WQcOHFCpUqUkSbVr19bvv//u9NS4pUuXKjAw0AqpateureXLlzvVYenSpapdu7YkWctKXyY1NVXLly+3ykRGRsrLy8upzK5du3Tw4EGrDAAAQHqc2QQAAHCDCQwM1DPPPKNhw4YpPDxcpUqV0tixYyVJrVu3liRFR0erQoUKeuKJJzRmzBjFxcXppZdeUs+ePa0zip555hlNmjRJAwcO1FNPPaUVK1bos88+03fffWctq3///urQoYOqV6+uGjVqaMKECUpISFCnTp0kSUFBQercubP69++v4OBgBQYGqnfv3qpdu3a2n0QHAADyF8ImAACAG9DYsWPl6empJ554QufPn1fNmjW1YsUKFSpUSJLk4eGhBQsWqHv37qpdu7b8/f3VoUMHjRw50ppH6dKl9d1336lfv3566623VKJECb333nuKiYmxyjz66KM6duyYhg4daj31btGiRU43DR8/frzc3d3VsmVLJSYmKiYmRu+8807ubQwAAJCnuBljjKsrkVvi4+MVFBSk06dPc2NKIA9JSEhQQECAJOns2bPcCBXXHW3OfhyDQRuwD/soAEBOuOIYzD2bAAAAAAAAYBvCJgAAAAAAANiGezYBAG56sbGx1qPks+P8+fPW31u2bJGvr2+OlhcWFqawsLAcTQMAAADcLPJE2HTgwAG98sorWrFiheLi4lS8eHE9/vjjevHFF+Xt7e3q6gEAbnDTpk3TiBEjrmnaunXr5niaYcOGafjw4de0PAAAACCvyxNh086dO5Wamqpp06apbNmy2rZtm7p06aKEhAS98cYbrq4egBziLBPktm7duql58+a5tjzaG4Cc4LgIALjZ5Nmn0Y0dO1ZTpkzRvn37siyTmJioxMRE63V8fLzCw8N1/PhxnoICuNDIkSM1atSoXFveSy+9pKFDh+ba8gBkFB8f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33+/tZ26du2qs2fPWuPTft147bXXVKxYMRUsWFAjR47UxYsX9fzzzys4OFglSpTQjBkzslzfy9c7/T8PDw9J0urVq1WjRg05HA6FhYVp8ODBTjtRu9vB8OHD9eGHH+rrr7+2fpFYtWrVNb9nqampGj16tEqXLi1fX19VqVJFX3zxhdM8vvnmG912223y8fFRgwYN9OGHH8rNzU2nTp2SJM2cOVMFCxbUN998owoVKsjhcOjgwYNKTEzUc889p1tuuUX+/v6qWbOm2rZtK09PT/3666+qWbOmBg4cqMjISLVv314HDhywtuvJkyfl5uamgIAAeXh4yN3dXa1atVJKSooeffRRubm5ycfHR3fccYfeeustp/chNDRUd999t/X5HDhwoBYtWqTffvvNanfe3t6qVauWtY6Z1TX9dk1bx8WLF6t8+fIKCAiwOiqSrvl9CQ0NVdWqVTV48GD9/fffOnbsmFXmam38ap/xpKQk9erVS2FhYfLx8VGpUqU0evRoSVJERIQk6eGHH5abm5v1+vL9SNrn6I033lBYWJgKFy6snj17Wh1O6dIvSE2bNpWvr69Kly6t2bNnKyIiQhMmTMhy/SXJ09NToaGhuuWWWxQVFaXWrVtn+Ky/9957Kl++vHx8fFSuXDm98847TuPXrVunqlWrysfHR9WrV9f8+fOdTu3P6thwtXZ/8uRJPfbYYwoJCZGvr69uu+02a19xpe0qZfylMrv7qittYyAn6IddQj+Mflja+tIPox92pTZFP4x+2H/uhxnYpkOHDuahhx7KcrwkM2/ePGOMMfv37zeSTLly5cyCBQvMrl27TKtWrUypUqVMcnKyMcaYPXv2GH9/fzN+/Hjz559/mh9//NFUq1bNdOzY0Zrn+++/b77//nuzd+9es379elO7dm3TuHFja/zKlSuNJHPnnXeaJUuWmD179pgTJ05ctX7Jyclm/PjxRpKZMmWKMcaYpKQkU758efPUU0+Z3377zfzxxx+mffv25o477jCJiYnGGGNGjRplgoODzVdffWV27NhhnnnmGRMYGOi0XerVq2cCAgLM888/b3bu3Gl27txpTp48aUJCQsyQIUPMjh07zKZNm8wDDzxgGjRoYIwx5vDhw8bT09OMGzfO7N+/3/z2229m8uTJ5syZMyY5OdkEBQWZ5557zuzZs8f88ccfZubMmeavv/4yxhgzbNgwU6VKFWv548aNM4GBgWbOnDlm586dZuDAgcbLy8v8+eef2X5vrvS+//777yY0NNTUrFnTGvbPP/+YsWPHms2bN5u9e/eat99+23h4eJiff/7ZabsEBgaa4cOHmz///NN8+OGHxs3NzSxZssQYY0xKSoqpVKmSadiwodmyZYtZvXq1qVatmtP7dvbsWRMWFmYeeeQR8/vvv5vly5eb0qVLmw4dOjjVt0CBAqZnz55m586d5v333zeSTExMjHn11VfNn3/+aV555RXj5eVl/v7770zbSmbrnd4///xj/Pz8TI8ePcyOHTvMvHnzTJEiRcywYcOuWzs4c+aMadOmjWnUqJGJjY01sbGxVru8lvds1KhRply5cmbRokVm7969ZsaMGcbhcJhVq1YZY4zZt2+f8fLyMs8995zZuXOnmTNnjrnllluMJHPy5EljjDEzZswwXl5e5p577jE//vij2blzp0lISDBPP/20ueeee8yaNWvMnj17zPDhw40kM2DAAGOMMU2bNjUPPPCA+e2338zevXvNt99+a1avXm2MMaZnz55GkgkODjZjxowxH330kXn//fdNUlKS6dOnj5FkFixYYD755BPj6+trvL29rffhySefNG5ubqZNmzbmjz/+MJ07dzYeHh7G09PTanflypUzkqx2d3ldx44daxwOh/V5SVvHqKgos2HDBrNx40ZTvnx50759e2OM+U/vy5kzZ0y3bt1M2bJlTUpKijEme238ap/xsWPHmvDwcLNmzRpz4MAB88MPP5jZs2cbY4w5evSokWRmzJhhYmNjzdGjR40xGfcjHTp0MIGBgeaZZ54xO3bsMN9++63x8/Mz06dPt8pERUWZqlWrmp9++sls3LjR1KtXz/j6+prx48dnuv6ZLWf//v2mYsWKplixYtawTz75xISFhZkvv/zS7Nu3z3z55ZcmODjYzJw50xhjzOnTp01wcLB5/PHHzfbt2833339vbr/9diPJbN682RiT9bHhau2+Z8+epmrVqmbDhg1m//79ZunSpeabb7656nY1xlzTvupq2xhIj34Y/TBj6IelrS/9MPphxtAPox/m2n4YYZONrqWT895771njt2/fbiSZHTt2GGOM6dy5s+natavTPH744Qfj7u5uzp8/n+kyNmzYYCSZM2fOGGP+ryHPnz//qvWXZHx8fIy/v79xd3c3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\3_КУРС_ПИ\\МИИ\\aisenv\\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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2RQeHq7nnntO6enpDtOFh4frjjvu0Nq1a9WyZUv5+fnpiiuu0Mcff3zBn0FuNWvW1A033OCw3aRzv5eNGzdWo0aNnM43d+5cRUZGyt/fX1WrVtX999+vAwcO5Jlu4cKFatSokfz8/NSoUSOnfV2SsrOzNXHiRF1zzTXy8/NTSEiIhgwZor///vui7+Fi/QAAypKbb75Z0rkdedKFxzOufPZ+/fXXat++vcqXL6+goCC1aNHC4bPW2TWaZs+ercjISPs8jRs31ptvvml/Pb9xWUG+Y3Le14EDB9StWzcFBgaqWrVqevLJJ5WVlXXBbXSh8YCr38HLli1T8+bN5e/vr/fffz/fdY4cOVKVK1fW1KlTne7YioqK0h133JHv/D///LMGDBigK664Qn5+fgoNDdWgQYN07Ngxh+lOnjypxx9/3D52CQ4O1q233qpNmzbZp9m5c6fuvvtuhYaGys/PT7Vq1dK9996rf/75x+H95YyLLjTmzO8aTRfrLwUZSw8YMECTJk2SJIfTRHM4u0aTK+Pf77//XjExMapWrZrKlSunu+66yx6oFUSfPn2UmJio7du329sOHTqkb775Jt8j0w4fPqwHHnhAISEh8vPzU0REhGbMmJFnuhMnTmjAgAGqUKGCKlasqP79++vEiRNOl7l9+3b16NFDlStXlp+fn5o3b65FixZdtP6C9APgYjh1DsXWzJkz1b17d/n6+qp3795677339OOPP6pFixb2aU6dOqV27dpp27ZtGjRokJo1a6ajR49q0aJF+uuvv1S1alVlZWXpjjvuUEJCgu69914NHz5cJ0+e1IoVK/TLL7+obt26Ltd29uxZRUVFqW3btnr99dfth6DPnTtXaWlpeuSRR1SlShVt2LBBb7/9tv766y/NnTvXPv/PP/+sdu3aycfHRw899JDCw8O1e/du/ec//9G4ceN04403KiwsTDNnztRdd92VZ7vUrVtXrVu3dlpb9+7dVbFiRY0YMUK9e/fW7bffrsDAQEnSr7/+qnbt2ikoKEhPP/20fHx89P777+vGG2/Ut99+m+daWEOHDlW1atU0atSoC+7lzPnS6tu3r8vbMsebb76prl276r777lNGRoZmz56tnj176quvvrLv/fn11191xx136Nprr9XYsWNls9m0a9cuff/99/blfPjhh3rsscfUo0cPDR8+XGfOnNHPP/+s9evX5/vl/sknn+iDDz7Qhg0b9NFHH0mSrr/+eqfTFqTPpaSk6KOPPlLv3r01ePBgnTx5UlOmTFFUVJQ2bNigJk2aqFq1anrvvff0yCOP6K677lL37t0lSddee22+2+jBBx/UjBkz1KNHDz3xxBNav3694uPjtW3btjxBza5du9SjRw898MAD6t+/v6ZOnaoBAwYoMjJS11xzTYF+Jn369NHw4cN16tQpBQYG6uzZs5o7d65iYmKcnjY3ffp0DRw4UC1atFB8fLySk5P15ptv6vvvv9fmzZvtezuXL1+uu+++Ww0bNlR8fLyOHTumgQMHOg0zhwwZYl/uY489pr179+qdd97R5s2b9f333+d7tNml9AMAKM1ydq5VqVLF3pbfeKagn73Tp0/XoEGDdM011yg2NlYVK1bU5s2btXTp0nw/a1esWKHevXvrlltu0SuvvCJJ2rZtm77//nsNHz483/oL+h0jSVlZWYqKilKrVq30+uuva+XKlRo/frzq1q2rRx55JN91XGg84Mp38I4dO9S7d28NGTJEgwcPVv369Z2ub+fOndq+fbsGDRqk8uXL51vXhaxYsUJ79uzRwIEDFRoaql9//VUffPCBfv31V/33v/+1BzAPP/yw5s2bp+joaDVs2FDHjh3T2rVrtW3bNjVr1kwZGRmKiopSenq6Hn30UYWGhurAgQP66quvdOLECVWoUCHPui805nSmIP2lIGPpIUOG6ODBg1qxYoU++eSTi24jV8e/jz76qCpVqqS4uDjt27dPEydOVHR0tObMmVOgn8kNN9ygWrVqadasWRo7dqwkac6cOQoMDHR6RNPp06d14403ateuXYqOjladOnU0d+5cDRgwQCdOnLD/XhhjdOedd2rt2rV6+OGHdfXVV+uLL75Q//79nb7nNm3aqGbNmnr22WdVrlw5ff755+rWrZvmz5+f5++LHJfSDwCnDFAM/fTTT0aSWbFihTHGmOzsbFOrVi0zfPhwh+lGjRplJJkFCxbkWUZ2drYxxpipU6caSWbChAn5TrNq1Sojyaxatcrh9b179xpJZtq0afa2/v37G0nm2WefzbO8tLS0PG3x8fHGw8PD/PHHH/a2G264wZQvX96hLXc9xhgTGxtrbDabOXHihL3t8OHDxtvb28TFxeVZj7O6X3vtNYf2bt26GV9fX7N7925728GDB0358uXNDTfcYG+bNm2akWTatm1rzp49e8F1GWNM06ZNTYUKFS46XY7+/fub2rVrO7Sdv+0yMjJMo0aNzM0332xve+ONN4wkc+TIkXyXfeedd5prrrnmguvPeX979+51qKlcuXJ5pq1du7bp37+//XlB+tzZs2dNenq6w2t///23CQkJMYMGDbK3HTlyxEhy+vOMi4szuT+iExMTjSTz4IMPOkz35JNPGknmm2++cahZklmzZo297fDhw8Zms5knnngiz7rOJ8kMGzbMHD9+3Pj6+ppPPvnEGGPM4sWLjYeHh9m3b5+9vpyfRUZGhgkODjaNGjUyp0+fti/rq6++MpLMqFGj7G1NmjQx1atXd+jby5cvN5Ic+sV3331nJJmZM2c61Ld06dI87e3btzft27e3Py9IPwCA0ijnO27lypXmyJEj5s8//zSzZ882VapUMf7+/uavv/4yxuQ/ninoZ++JEydM+fLlTatWrRw+941xHM+c/50/fPhwExQUdMHxxfnjMle+Y3Le19ixYx2W2bRpUxMZGZnvOnPPf/544FK+g5cuXXrRdX355ZdGknnjjTcuOq0xzselzsaen332WZ5xQIUKFcywYcPyXfbmzZuNJDN37twL1nD+uCi/Mef5Y62C9peCjqWHDRvmME7K7fyxlavj3w4dOjjUNGLECOPl5eUwbnEm99joySefNPXq1bO/1qJFCzNw4EB7fbl/FhMnTjSSzKeffmpvy8jIMK1btzaBgYEmJSXFGGPMwoULjSTz6quv2qc7e/asadeuXZ5+ccstt5jGjRubM2fO2Nuys7PN9ddfb6688kp72/m/awXtB8DFcOociqWZM2cqJCREN910k6Rzh8D26tVLs2fPdjjsef78+YqIiHCayufswZk/f76qVq2qRx99NN9pLoWzPWL+/v72x6mpqTp69Kiuv/56GWO0efNmSefOZV+zZo0GDRqkf/3rX/nW069fP6WnpzucPjZnzhydPXtW999/v8v1ZmVlafny5erWrZuuuOIKe3v16tXVp08frV27VikpKQ7zDB48WF5eXhdddkpKyiXvicuRe9v9/fff+ueff9SuXTuHQ7pz9lZ++eWX+V5YtGLFivrrr7/0448/XlY9+SlIn/Py8rJf2yE7O1vHjx/X2bNn1bx5c4f344olS5ZIkmJiYhzan3jiCUnS4sWLHdobNmyodu3a2Z9Xq1ZN9evX1549ewq8zkqVKum2226zX2dg1qxZuv766+2Hyef2008/6fDhwxo6dKjDtaU6d+6sBg0a2OtLSkpSYmKi+vfv77BX7NZbb1XDhg0dljl37lxVqFBBt956q44ePWr/FxkZqcDAQIdTEc9X2P0AAIq7Dh06qFq1agoLC9O9996rwMBAffHFF6pZs6bDdOePZwr62btixQqdPHlSzz77bJ5rCl5ofFWxYkWlpqZqxYoVBX4vBf2Oye3hhx92eN6uXTuXvgNzc/U7uE6dOoqKirrocnPGXZczhso9fjpz5oyOHj2q6667TpLyjKHWr1+f712Ac76Tly1bprS0tEuuJz8F7S8FGUu74lLGvw899JBDTe3atVNWVpb++OOPAq+3T58+2rVrl3788Uf7//kd5bdkyRKFhoaqd+/e9jYfHx899thjOnXqlL799lv7dN7e3g6/s15eXnn+xjl+/Li++eYb3XPPPTp58qT9d/jYsWOKiorSzp07nV7WQCr8foCyg6AJxU5WVpZmz56tm266SXv37tWuXbu0a9cutWrVSsnJyUpISLBPu3v37nyvFZN7mvr161t6UUBvb2+np/ns379fAwYMUOXKle3XBGjfvr0k2c9rzhnkXKzuBg0aqEWLFg7Xppo5c6auu+66S7r73pEjR5SWlub08O2rr75a2dnZeW7FWqdOnQItOygoSCdPnnS5pty++uorXXfddfLz81PlypXtp5blPh+8V69eatOmjR588EGFhITo3nvv1eeff+4QOj3zzDMKDAxUy5YtdeWVV2rYsGEOp9ZdroL0OUmaMWOGrr32Wvn5+alKlSqqVq2aFi9efMnnt//xxx/y9PTM87MPDQ1VxYoV8wx+zg8xpXPBUUGubZRbnz59tGLFCu3fv18LFy7Md5CUs35n/atBgwb213P+v/LKK/NMd/68O3fu1D///KPg4GBVq1bN4d+pU6d0+PDhfOsu7H4AAMXdpEmTtGLFCq1atUq//fab9uzZkyf8cDaeKehnb86peAX5Tsxt6NChuuqqq9SpUyfVqlVLgwYN0tKlSy84T0G/Y3L4+fnZr4OY41K+A3Ov35XvYFfGT5Iuawx1/PhxDR8+XCEhIfL391e1atXs68895nj11Vf1yy+/KCwsTC1bttTo0aMdgrc6deooJiZGH330kapWraqoqChNmjTJsuvyFLS/FGQs7YpLGf+eP4aqVKmSJLnUf5o2baoGDRpo1qxZmjlzpkJDQ+3XSTvfH3/8oSuvvDLPxe+vvvpq++s5/1evXj3P6Ynnv7ddu3bJGKORI0fm+R2Oi4uTpHzHUIXdD1B2cI0mFDvffPONkpKSNHv2bM2ePTvP6zNnzlTHjh0tXWd+e97yu2ikzWbL82WQlZWlW2+9VcePH9czzzyjBg0aqFy5cjpw4IAGDBjg8q19pXNHNQ0fPlx//fWX0tPT9d///lfvvPOOy8u5VLn3Kl1IgwYNtHnzZv35558KCwtzeT3fffedunbtqhtuuEHvvvuuqlevLh8fH02bNs3hApH+/v5as2aNVq1apcWLF2vp0qWaM2eObr75Zi1fvlxeXl66+uqrtWPHDn311VdaunSp5s+fr3fffVejRo3SmDFjXK7tUnz66acaMGCAunXrpqeeekrBwcHy8vJSfHy8faB1qQp6FF5+R6IZY1xaX9euXWWz2dS/f3+lp6frnnvucWn+y5Gdna3g4OB8bwRw/h8RuRWHfgAA7tSyZUs1b978gtM4G89czmdvQQQHBysxMVHLli3T119/ra+//lrTpk1Tv379nF78+FIU5GjsS1HQ72BXxk+StHXr1kuu6Z577tEPP/ygp556Sk2aNFFgYKCys7N12223OYw977nnHrVr105ffPGFli9frtdee02vvPKKFixYoE6dOkmSxo8frwEDBujLL7/U8uXL9dhjjyk+Pl7//e9/L3hTGKsUxlj6Ulg1hurTp4/ee+89lS9fXr169SqyuyjmbKcnn3wy3yPrLrTT2t39AKUDQROKnZkzZyo4ONh+N4ncFixYoC+++EKTJ0+Wv7+/6tatq19++eWCy6tbt67Wr1+vzMzMfC8cnLOn4vy7NrhyiOzWrVv1+++/a8aMGerXr5+9/fxDw3MO271Y3ZJ07733KiYmRp999plOnz4tHx8f9erVq8A15VatWjUFBARox44deV7bvn27PD09LykkkqQuXbros88+06effqrY2FiX558/f778/Py0bNkyh1sgT5s2Lc+0np6euuWWW3TLLbdowoQJevnll/X8889r1apV6tChgySpXLly6tWrl3r16qWMjAx1795d48aNU2xsbJ7DtV1VkD43b948XXHFFVqwYIHDoDRnL1IOV07drF27trKzs7Vz5077Hi5JSk5O1okTJ5yezmYFf39/devWTZ9++qk6deqkqlWr5lufdO4CqOfvsduxY4f99Zz/d+7cmWcZ5/fNunXrauXKlWrTpk2BB+25FWY/AIDSqqCfvTk3U/nll19cPtLa19dXXbp0UZcuXZSdna2hQ4fq/fff18iRI50uq6DfMYWlsL6Dr7rqKtWvX19ffvml3nzzzQteSNuZv//+WwkJCRozZoxGjRplb3f2HSudO11s6NChGjp0qA4fPqxmzZpp3Lhx9qBJkho3bqzGjRvrhRde0A8//KA2bdpo8uTJeumlly7pPeYoSH8p6FhaKvgYqjDHvxfTp08fjRo1SklJSRe8aHnt2rX1888/Kzs72yGMyrlrXe4xVEJCgv0mLTnOf285f2v4+PjYx8auKqx+gLKDU+dQrJw+fVoLFizQHXfcoR49euT5Fx0drZMnT9rvcnb33Xdry5YtTm+NnrPX4e6779bRo0edHgmUM03t2rXl5eWlNWvWOLz+7rvvFrj2nL0fufd2GGMcbtcrnfvCu+GGGzR16lTt37/faT05qlatqk6dOunTTz/VzJkzddttt+X7h35B6uvYsaO+/PJLh1vNJicna9asWWrbtq39EG5X9ejRQ40bN9a4ceO0bt26PK+fPHlSzz///AVr8/DwcDiCbN++fVq4cKHDdMePH88zb5MmTSTJfnvh82/n6+vrq4YNG8oYo8zMzIK+pXwVpM856wvr16/Ps21y7u6T321pc7v99tslSRMnTnRonzBhgiQ5vYuJVZ588knFxcVp5MiR+U7TvHlzBQcHa/LkyQ63ev7666+1bds2e33Vq1dXkyZNNGPGDIfDsFesWKHffvvNYZn33HOPsrKy9OKLL+ZZ39mzZy+43Qq7HwBAaVXQz96OHTuqfPnyio+Pz3Mn0gsd+XH+57Onp6f9jqu5vz9yK+h3TGEpzO/gMWPG6NixY3rwwQd19uzZPK8vX75cX331ldN5nY03nNWZlZWV59Sn4OBg1ahRw749U1JS8qy/cePG8vT0zPfn4oqC9JeCjqWlczuTpIuPoQpz/HsxdevW1cSJExUfH6+WLVvmO93tt9+uQ4cOOdzV7uzZs3r77bcVGBhoP3Xw9ttv19mzZ/Xee+/Zp8vKytLbb7/tsLzg4GDdeOONev/995WUlJRnfUeOHMm3lsLuByg7OKIJxcqiRYt08uRJde3a1enr1113napVq6aZM2eqV69eeuqppzRv3jz17NlTgwYNUmRkpI4fP65FixZp8uTJioiIUL9+/fTxxx8rJiZGGzZsULt27ZSamqqVK1dq6NChuvPOO1WhQgX17NlTb7/9tjw8PFS3bl199dVXF7wGzPkaNGigunXr6sknn9SBAwcUFBSk+fPnOz2f+6233lLbtm3VrFkzPfTQQ6pTp4727dunxYsXKzEx0WHafv36qUePHpLkdNDnipdeekkrVqxQ27ZtNXToUHl7e+v9999Xenq6Xn311Utero+PjxYsWKAOHTrohhtu0D333KM2bdrIx8dHv/76q2bNmqVKlSpp3LhxTufv3LmzJkyYoNtuu019+vTR4cOHNWnSJNWrV08///yzfbqxY8dqzZo16ty5s2rXrq3Dhw/r3XffVa1atdS2bVtJ5wYyoaGhatOmjUJCQrRt2za988476ty582VfsFxSgfrcHXfcoQULFuiuu+5S586dtXfvXk2ePFkNGzbUqVOn7Mvy9/dXw4YNNWfOHF111VWqXLmyGjVq5PT6BREREerfv78++OADnThxQu3bt9eGDRs0Y8YMdevWzX7h/MIQERGhiIiIC07j4+OjV155RQMHDlT79u3Vu3dv+62nw8PDNWLECPu08fHx6ty5s9q2batBgwbp+PHjevvtt3XNNdc4bJ/27dtryJAhio+PV2Jiojp27CgfHx/t3LlTc+fO1Ztvvmn/3ThfYfcDACitCvrZGxQUpDfeeEMPPvigWrRooT59+qhSpUrasmWL0tLS8j0N7sEHH9Tx48d18803q1atWvrjjz/09ttvq0mTJg5HC+XmyndMYSjM7+BevXpp69atGjdunDZv3qzevXurdu3aOnbsmJYuXaqEhASHywjkFhQUpBtuuEGvvvqqMjMzVbNmTS1fvlx79+51mO7kyZOqVauWevTooYiICAUGBmrlypX68ccfNX78eEnnLl0RHR2tnj176qqrrtLZs2f1ySefyMvLS3ffffclv7/ctV6sv7gylo6MjJQkPfbYY4qKipKXl5fuvfdep+surPFvQQwfPvyi0zz00EN6//33NWDAAG3cuFHh4eGaN2+evv/+e02cONE+bunSpYvatGmjZ599Vvv27VPDhg21YMECp9dPmjRpktq2bavGjRtr8ODBuuKKK5ScnKx1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P79QX+zSpYsZOHCg09ecne9foUIF+1ESxuS9bkXv3r1NmzZtLvoechw5csRIMlu3bs13ncY49qNTp04ZHx8fM3PmTPvrGRkZpkaNGubVV191qCv39UMWL15sJBXZtWBwcYyfzikr46e4uDjj5eVl/6zPGUNJMvPmzct3GxrDGIox1P/kfL7n/A588sknDmOoKlWq2PvW008/bYw593tb0PHTsGHDzM0332wfQ1WvXt0MGTLE/l2XM346/4imnGslzZ8/33h5eZkDBw6Yo0eP2sdQt9xyi+ncubORZF555RX7WCpn3MT4ifFTaRo/cURTEdi2bZtat25tT9QlqU2bNjp16pT++usv7dmzR5mZmQ57wypUqKD69evnu8yePXvq9OnTuuKKKzR48GB98cUXOnv2rEt15aSmrihfvrwSExP1008/afz48WrWrJl9b5skbdmyRWPHjrWfjxsYGKjBgwcrKSlJaWlp2rFjh8LCwhzOR81vL2Dz5s3tj1NTU7V792498MADDst+6aWXtHv3bknn9iAkJiaqfv36euyxx7R8+XL7/K5sr23btiksLExhYWH2toYNG6pixYratm2bva1cuXJKTEzU+vXr1b9/f7Vs2dJhmVlZWXrxxRfVuHFjVa5cWYGBgVq2bFmec6WvvfZah+fVq1e3p/Y5teRO51u3bp2n3oiICIe9TG3atFF2drZ27Nhhb7vmmmvk6fm/X/mQkBCHvZJeXl6qUqXKBfcYSNJNN92kxMRE+7+33nrLXseF+nmOyMhIh+Vt2bJFq1atcvi5NmjQQNK5c5kjIiJ0yy23qHHjxurZs6c+/PBD/f333xes8XzGGJemz23OnDlq06aNQkNDFRgYqBdeeMHhZxgTE6MHH3xQHTp00L///W97f5Skxx57TC+99JLatGmjuLg4/fzzzy6te+TIkQoMDNQ111yj9PR0h9/Z3L8fOZ555hlVrFhRXl5e8vDw0Ny5cyVJ+/fv1z///KNjx445TO/t7Z1nOWlpafLw8FCrVq20detWZWVl6brrrlN6erruv/9+BQYGaseOHfLy8lLdunUlSQEBAbr22mvtfSd3H3ZV7v61YcMGRUVFqVOnTvrjjz8kXby/p6Sk6ODBg2rTpo3Dctu0aWP//b3QZ4UrrrnmGvvRCJLj+96xY4e8vb3/j707j4uq7P8//h4QhkURNxaV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HOxof+np6Tn2nzLruXDhgmw2m9LT03X06FGVK1fOqQ+VnyuA0X+6iP7T9dl/Imiy0KlTp7L9onDw4EENHjxYBw8e1OOPP67t27fr66+/VmxsrGJiYuTm5qYyZcqod+/eGjlypFasWKGtW7fq0UcflZubW45HOUgXj15477339Pvvv2vv3r365JNP5O3trWrVqkmSQkND9cMPP+jQoUNKTEzM8TliY2P12WefKTY2Vtu2bXMMcJYfISEhuu+++zRmzBhJ0pgxY/TRRx8pLi5OW7du1bZt2zRnzhw999xzkqQ777xTNWvWVO/evfXrr79q9erVjsdy29ZMcXFxio+P15tvvqmdO3fqt99+0/vvv6+JEydKkiZOnKjPPvtM27dv186dOzVv3jwFBQXJ39//ivsrq8jISDVq1EgPPfSQNm7cqPXr1ys6Olrt2rXL8TDZTGFhYZLkSMJr166t7777TmvWrNG2bdv02GOPOXUQ8yIyMlJ16tRR7969tWXLFv3444/ZBv986KGH5OXlpd69e+v333/XihUr9Pjjj6tXr17Zfs0pTFdq57kZMmSITpw4oR49eujnn3/Wnj17tGTJEvXt21fp6elat26dJkyYoF9++UUHDhzQF198oWPHjjkOYQ4NDdWvv/6qHTt2KDExMddfWadOnar09HQ1b95cn3/+uXbt2qVt27bpzTffzHYofabatWvrwIEDmjNnjvbs2aM333zTafDsc+fOaejQoVq5cqX+/PNPrV69Wj///LOjtuHDh2vJkiXat2+fNm7cqBUrVjgdep3Va6+9JkkaOHCg5s6dq23btunw4cNKTU3V9u3b5e7u7njPStLBgwed3rOZ7S8mJkbLly9X9+7dsx0CO2DAAEkX30tr1qxR//79s3UQvb29HadIHD16VB06dFC3bt1UtmxZNW7cWOvXr9c333yTr1+z8/oaSVJKSoqOHDmiI0eOaNu2bXr88ccdv9hKeWvvI0eO1Msvv6y5c+dqx44dGjVqlDZv3qxhw4ZJuvxnRWa9y5cv15EjR/J9ikGmevXqKTIyUgMGDND69eu1adMmDRgwQN7e3pf9rBs/frxCQkLUokULffTRR/rjjz+0a9cuzZo1SzfddJPj6ISsatWqpbS0NE2ZMkV79+7Vxx9/rGnTpjnNc7m2OGbMGH399dfavXu3tm7dqm+++SbXdpoX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Y5zms9lsGjp0qL766is1bNhQdrtdN954oxYvXpzra3Cpli1bqnr16k59WEn69NNPddddd6l8+fI5Lvf222/rxhtvlN1uV+XKlTVkyJAcT5vM7AN6e3urefPm+vHHH3N8vpSUFMXGxqpWrVqy2+0KCQnRU089la3vdqm8tAMgPziiCcVeZhhQrlw5x7StW7eqVatWqlKlikaNGiVfX1/9+9//VpcuXfT555/rvvvuk3RxQOk2bdpo27ZteuSRR9SkSRMlJiZqwYIF+uuvv1SxYkUlJSXp3XffVY8ePdS/f3+dPn1a7733nqKiorR+/fpsh/bm17PPPqu6detqxowZjkPga9asKeliuNG3b181a9ZM8fHxSkhI0BtvvKHVq1dr06ZNTr80XbhwQVFRUWrdurVee+01+fj45LrO//znP6pRo4ZuueWWAtW8d+9effXVV+ratauqV6+uhIQETZ8+Xe3atdMff/zhODx/5syZ+te//qUHHnhAw4YN0/nz5/Xrr79q3bp16tmzpyRp4MCBmj9/voYOHaoGDRro+PHjWrVqlbZt26YmTZpkW3f9+vX18ccfa8SIEapataqeeOIJSVKlSpV07NixbPP/+uuvatOmjTw8PDRgwACFhoZqz549+s9//qPx48dLunh4+5o1a/Tggw+qatWq2r9/v9555x3deuut+uOPP+Tj46O2bdvqX//6l958800988wzql+/vqOenJw7d0633nqrdu/eraFDh6p69eqaN2+e+vTpo5MnT2YL8mbPnq3Tp0/rsccek81m0yuvvKL7779fe/fuzdN/Enx8fNS5c2d99tlnGjRokCRpy5Yt2rp1q9599139+uuv2Zbp16+fPvzwQz3wwAN64okntG7dOsXHx2vbtm368ssvHfONGTNG48aNU4cOHdShQwdt3LhR7du3d3QgM509e1bt2rXToUOH9Nhjj+mGG27QmjVrNHr0aB0+fFiTJ0/Otf78tgMAgHTq1CnHD2OZsh7VerXy8tn83Xff6d5771VwcLCGDRumoKAgbdu2Td98843ju27ZsmW6++67VaNGDY0dO1bnzp3TlClT1KpVK23cuDFbgNC1a1fVrl1bEyZMcIQG48eP1/PPP69u3bqpX79+OnbsmKZMmaK2bdtm6xNl9dhjj6lKlSqaMGGC/vWvf6lZs2YKDAy0rK6cLFiwQN7e3nrggQcKsNeV577nd999px49euiOO+7Qyy+/LEnatm2bVq9e7dj3Y8eOVXx8vPr166fmzZsrKSlJv/zyizZu3Kg777wz27orVaqkjz/+WOPHj9eZM2cUHx8vKff+zt9//63mzZvr5MmTGjBggOrVq6dDhw5p/vz5Onv2rDw9PfPUb6xfv75eeOEFjRkzRgMGDHD8kJxbX9UYo06dOmnFihV69NFHFR4eriVLlmjkyJE6dOhQtlP+Vq1apS+++EKDBw9WmTJl9Oabb+r//u//dODAAVWoUCFPr0uPHj30ySef6KWXXpLNZlNiYqKWLl2qjz/+OMfQauzYsYqLi1NkZKQGDRqkHTt26J133tHPP/+s1atXO/p37733nh577DHdcsstGj58uPbu3atOnTqpfPnyCgkJcTxfRkaGOnXqpFWrVmnAgAGqX7++fvvtN02aNEk7d+7UV199lWvt+W0HwBUZoJh4//33jSSzbNkyc+zYMXPw4EEzf/58U6lSJWO3283Bgwcd895xxx2mUaNG5vz5845pGRkZ5pZbbjG1a9d2TBszZoyRZL744ots68vIyDDGGHPhwgWTkpLi9Ng///xjAgMDzSOPPOI0XZKJjY3NVvO+ffvytG0///yzY1pqaqoJCAgwDRs2NOfOnXNM/+abb4wkM2bMGMe03r17G0lm1KhRl12PMcacOnXKSDKdO3e+4ryZqlWrZnr37u34+/z58yY9Pd1pnn379hm73W5eeOEFx7TOnTubG2+88bLPXbZsWTNkyJDLztO7d29TrVq1bDXdc8892WqQZN5//33HtLZt25oyZcqYP//802nezNfXGGPOnj2bbZ1r1641ksxHH33kmDZv3jwjyaxYsSLb/O3atTPt2rVz/D158mQjyXzyySeOaampqaZly5amdOnSJikpyanmChUqmBMnTjjm/frrr40k85///Cf7DslixYoVRpKZN2+e+eabb4zNZjMHDhwwxhgzcuRIU6NGDUd9WV+LzZs3G0mmX79+Ts/35JNPGknm+++/N8YYc/ToUePp6Wnuuecep332zDPPGElO7eLFF180vr6+ZufOnU7POWrUKOPu7u6oy5js75W8tAMAwEWZ/Yacbrm55557sn2XXsmVPpsvXLhgqlevbqpVq2b++ecfp8eyfmeEh4ebgIAAc/z4cce0LVu2GDc3NxMdHe2Y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pjfffFOxsbHq1avXZeuTlO1KcJm/kmW2r8jISHl4eGjKlClO+yinK8h169ZNa9eu1ZIlS7I9dvLkSV24cCHHWgq7HQAAcufl5ZXt9Lty5crl6bO5SZMmql69uiZPnpztuzHzOyM4OFjh4eH68MMPneb5/ffftXTpUsf30eXcf//9cnd3V1xcXLbva2NMtv5GXlhRV24GDhyo4OBgPfHEE9q5c2e2x48ePapx48blunxe+56Xbrebm5saN24sSY7X6NJ5SpcurVq1alny/erm5qYuXbroP//5j3755Zdsj2ftS+el35jfflZ6erreeustp+mTJk2SzWYr1B+pxo0bp9jYWD3++OO5zhMZGSlPT0+9+eabTtv+3nvv6dSpU45+VtOmTVWpUiVNmzbN6Wq+H3zwQbb90K1bNx06dEgzZ87Mtr5z585lO9Uzq8JsByiZOKIJJcLIkSPVtWtXffDBBxo4cKCmTp2q1q1bq1GjRurfv79q1KihhIQErV27Vn/99Ze2bNniWG7+/Pnq2rWrHnnkEUVEROjEiRNasGCBpk2bprCwMN1777364osvdN999+mee+7Rvn37NG3aNDVo0EBnzpwptG3y8PDQyy+/rL59+6pdu3bq0aOHEhIS9MYbbyg0NFQjRowo8HPXrFlTs2fPVvfu3VW/fn1FR0erYcOGSk1N1Zo1azRv3jz16dMn1+XvvfdevfDCC+rbt69uueUW/fbbb/r000+znUvevn17BQUFqVWrVgoMDNS2bdv01ltv6Z577lGZMmV08uRJVa1aVQ888IDCwsJUunRpLVu2TD///LPT0UVX480331Tr1q3VpEkTDRgwQNWrV9f+/fu1cOFCbd682bE9H3/8scqWLasGDRpo7dq1WrZsWbbL3YaHh8vd3V0vv/yyTp06Jbvdrttvv10BAQHZ1jtgwABNnz5dffr00YYNGxQaGqr58+dr9erVmjx58lUNEnolnTt3VufOnS87T1hYmHr37q0ZM2bo5MmTateundavX68PP/xQXbp00W233SbpYlj35JNPKj4+Xvfee686dOigTZs26dtvv8129NrIkSO1YMEC3XvvverTp48iIiKUnJys3377TfPnz9f+/ftzvOz26dOnC70dAEBJ9Ouvv2rBggWSLo5heerUKUfAERYWpo4dO+a6bF4+m93c3PTOO++oY8eOCg8PV9++fRUcHKzt27dr69atjh8eXn31Vd19991q2bKlHn30UZ07d05TpkxR2bJlNXbs2CtuR82aNTVu3DiNHj1a+/fvV5cuXVSmTBnt27dPX375pQYMGKAnn3wy3/vnauvKTbly5fTll1+qQ4cOCg8P18MPP6yIiAhJ0saNG/XZZ59d9ojyvPY9+/XrpxMnTuj2229X1apV9eeff2rKlCkKDw93HK3coEED3XrrrYqIiFD58uX1yy+/aP78+Ro6dGiBty+rCRMmaOnSpWrXrp0GDBig+vXr6/Dhw5o3b55WrVolf3//PPcba9asKX9/f02bNk1lypSRr6+vWrRokePYWB07dtRtt92mZ599Vvv371dYWJiWLl2qr7/+WsOHD3ca+Ntq7dq1u+IPhpUqVdLo0aMVFxenu+66S506ddKOHTv09ttvq1mzZnr44YclXezvjxs3To899phuv/12de/eXfv27dP777+fbf/06tVL//73vzVw4ECtWLFCrVq1Unp6urZv365///vfWrJkSY6DskuF3w5QAhXpNe6AQpR5Kd+cLp+anp5uatasaWrWrOm4xOuePXtMdHS0CQoKMh4eHqZKlSrm3nvvNfPnz3da9vjx42bo0KGmSpUqxtPT01StWtX07t3bJCYmGmMuXpp1woQJplq1asZut5ubbrrJfPPNN9kus2pM9ku+Zta8b9++Am/b3LlzzU033WTsdrspX768eeihh8xff/3lNM+ll1TNq507d5r+/fub0NBQ4+npacqUKWNatWplpkyZYs6fP++Y79JLpJ4/f9488cQTJjg42Hh7e5tWrVqZtWvXZrs87/Tp003btm1NhQoVjN1uNzVr1jQjR440p06dMsYYk5KSYkaOHGnCwsJMmTJljK+vrwkLCzNvv/12tu27dF9Xq1Yt22VaMy9Be+llcX///Xdz3333GX9/f+Pl5WXq1q1rnn/+ecfj//zzj+nbt6+pWLGiKV26tImKijLbt2/Ptt3GGDNz5kxTo0YN4+7ubiSZFStWGGOyX5rYGGMSEhIcz+vp6WkaNWqUrbasl8291KXtKSe5XbL5UjldpjgtLc3ExcWZ6tWrGw8PDxMSEmJGjx7t9Nobc/H9FRcX53i9b731VvP777/nuH9Onz5tRo8ebWrVqmU8PT1NxYoVzS233GJee+01k5qamuO25bUdAAAuuly/Iaf5crpd+vl9qfx8Nq9atcrceeedjvkaN26c7bLxy5YtM61atTLe3t7Gz8/PdOzY0fzxxx9O88TGxhpJ5tixYznW9Pnnn5vWrVsbX19f4+vra+rVq2eGDBliduzYcdltudx3pRV15ebvv/82I0aMMHXq1DFeXl7Gx8fHREREmPHjxzv6QsZk70Pkte85f/580759exMQEGA8PT3NDTfcYB577DFz+PBhxzzjxo0zzZs3N/7+/sbb29vUq1fPjB8/3uk7OXP7ssqp32BMzn2TP//800RHR5tKlSoZu91uatSoYYYMGWJSUlKMMXnvNxpjzNdff20aNGhgSpUq5dSny6kvePr0aTNixAhTuXJl4+HhYWrXrm1effVVk5GRka3mIUOGZNuWnPoxl7pcPy2r3Prib731lqlXr57x8PAwgYGBZtCgQeaff/7JNt/bb79tqlevbux2u2natKn54Ycfctw/qamp5uWXXzY33nijsdvtply5ciYiIsLExcU5talLty0v7QDID5sx+RzhDAAAAAAAAMgBYzQBAAAAAADAEgRNAAAAAAAAsARBEwAAAAAAACxB0AQAAAAAAABLEDQBAAAAAADAEgRNAAAAAAAAsEQpVxdQ1DIyMvT333+rTJkystlsri4HAAD8f8YYnT59WpUrV5abG7+FXWvoQwEAcG261vpQJS5o+vvvvxUSEuLqMgAAQC4OHjyoqlWruroMXII+FAAA17ZrpQ9V4oKmMmXKSLr4Avj5+bm4GgAAkCkpKUkhISGO72pcW+hDAQBwbbrW+lAlLmjKPNTbz8+PThIAANcgTsu6NtGHAgDg2nat9KFcf/IeAAAAAAAAigWCJgAAAAAAAFiCoAkAAAAAAACWIGgCAAAAAACAJQiaAAAAAAAAYAmCJgAAAAAAAFiCoAkAAAAAAACWIGgCAAAAAACAJVwaNP3www/q2LGjKleuLJvNpq+++uqKy6xcuVJNmjSR3W5XrVq19MEHHxR6nQAAAAAAALgylwZNycnJCgsL09SpU/M0/759+3TPPffotttu0+bNmzV8+HD169dPS5YsKeRKAQAAAAAAcCWlXLnyu+++W3fffXee5582bZqqV6+u119/XZJUv359rVq1SpMmTVJUVFRhlQkAAAAAAIA8cGnQlF9r165VZGSk07SoqCgNHz4812VSUlKUkpLi+DspKUmS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "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", + "df = pd.read_csv(\n", + " \".//static//csv///world-population-by-country-2020.csv\", index_col=\"no\"\n", + ")\n", + "\n", + "df[\"Population2020\"] = df[\"Population2020\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"NetChange\"] = df[\"NetChange\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Yearly Change\"] = df[\"Yearly Change\"].apply(lambda x: float(\"\".join(x.rstrip(\"%\"))))\n", + "df[\"LandArea\"] = df[\"LandArea\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "df[\"Density\"] = df[\"Density\"].apply(lambda x: int(\"\".join(x.split(\",\"))))\n", + "\n", + "# Определяем категориальные и числовые столбцы\n", + "numerical_cols = [\"NetChange\", \"Yearly Change\", \"LandArea\", \"Density\"]\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['Population2020']\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['Population2020'] > df['Population2020'].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 +}