From 0ab7af9543f4dd108336876c82d3eb39b4636d47 Mon Sep 17 00:00:00 2001 From: "a.puchkina" Date: Sat, 22 Feb 2025 12:46:29 +0400 Subject: [PATCH 1/2] =?UTF-8?q?8=20=D0=BB=D0=B0=D0=B1=D0=B0=D0=B1=D0=B0?= =?UTF-8?q?=D0=B1=D0=B0=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab_2/lab2.ipynb | 1303 ------------------------------------------ lab_3/lab3.ipynb | 1408 ---------------------------------------------- lab_8/lab8.ipynb | 55 ++ 3 files changed, 55 insertions(+), 2711 deletions(-) delete mode 100644 lab_2/lab2.ipynb delete mode 100644 lab_3/lab3.ipynb create mode 100644 lab_8/lab8.ipynb diff --git a/lab_2/lab2.ipynb b/lab_2/lab2.ipynb deleted file mode 100644 index e68a077..0000000 --- a/lab_2/lab2.ipynb +++ /dev/null @@ -1,1303 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Лабораторная работа №2" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "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\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "from imblearn.under_sampling import RandomUnderSampler\n", - "from sklearn.preprocessing import LabelEncoder\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Цены на автомобили**\n", - "https://www.kaggle.com/datasets/deepcontractor/car-price-prediction-challenge\n", - "\n", - "Этот набор данных предоставляет подробную информацию о продаже автомобилей, включая их уникальные идентификаторы, цены, сборы и налоги, а также характеристики производителя и модели. В данных представлены год производства, категория автомобиля, наличие кожаного салона, тип топлива, объем двигателя, пробег, количество цилиндров, тип коробки передач, привод, количество дверей, расположение руля, цвет и количество подушек безопасности. Эти данные могут быть использованы для анализа рынка автомобилей, прогнозирования цен на основе различных факторов, а также для изучения влияния технических и визуальных характеристик на стоимость автомобилей." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Выгрузка данных из csv файла \"Цены на автомобили\" в датафрейм" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['ID', 'Price', 'Levy', 'Manufacturer', 'Model', 'Prod. year',\n", - " 'Category', 'Leather interior', 'Fuel type', 'Engine volume', 'Mileage',\n", - " 'Cylinders', 'Gear box type', 'Drive wheels', 'Doors', 'Wheel', 'Color',\n", - " 'Airbags'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "df1 = pd.read_csv(\"..//static//csv//car_price_prediction.csv\")\n", - "print(df1.columns)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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OaBER0erRYsWGjdunNzc3DRjxgzdcccdWrNmjVq1auVQ79///nfddNNNevXVV2WMyXff7N+/X5JUsWLFXNssXbpU0dHRqlWrlsaPH68LFy7ovffe02233aZffvlFNWvWVK9evfT777/rv//9r9555x37WY2goKBclztz5kwNHjxYLVu2VExMjI4ePWo/0NyyZYvKlSunF154QfXq1dPHH39sv/yudu3ahbKd6enp6tKli26//Xa9+eabeX4r//DDD2vmzJmKjo7WI488ovT0dK1Zs0Y//fST/czWK6+8ohdffFG9e/fWI488ouPHj+u9995Tu3bt7NuTk27dusnf319ffvmloqKiHObNmTNHDRs2tO+39957r3bu3KnHH39cNWvW1LFjxxQbG6tDhw4VaECLnPrl5MmTio6O1gMPPKB+/fopJCREFy5cUPv27bVv3z6NGDFC4eHhmjt3rgYNGqQzZ87oySeflCQZY9SjRw+tXbtWjz76qBo0aKB58+bZw29BWfX/rFmz9Mgjj6hVq1YaOnSoJOW5n4wfP14TJkxQp06d9Nhjj2nPnj368MMPtXHjRq1bt87hrOPp06fVtWtX9erVS71799ZXX32l5557To0bN1Z0dHSedWddjvfcc8+pY8eOevLJJ9WmTRsNGzZMkjRs2DD738ETTzyh+Ph4vf/++9qyZYtDHc585mTJ6f0DUIoYAHChH3/80bi7uxt3d3cTGRlpnn32WbNkyRKTlpbm0G7v3r3Gzc3N3HPPPSYjI8NhXmZmpv3/z58/n20dw4YNM76+vubixYv2ad26dTM1atTI1nbjxo1GkpkxY0a2ddx0002mS5cu2dYXHh5u7rzzTvu0cePGGUmmT58+TvXBihUrjCQzffp0c/z4cXPkyBGzaNEiU7NmTWOz2czGjRuNMcbEx8dnq61p06YmODjYnDx50j5t27Ztxs3NzQwYMMA+bdKkSUaSiY+Pt6wnLS3NBAcHm0aNGpkLFy7Ypy9cuNBIMi+99JJ92owZM4wke415yWq7dOlSc/z4cXP48GHzxRdfmIoVKxofHx/z559/GmOMGThwoJFknn/++WzLGDhwoMP7tnz5ciPJPPHEE9naZr1PBw4cMO7u7uaVV15xmL99+3ZTpkyZbNOv1qdPHxMcHGzS09Pt0xISEoybm5uZOHGiMcaY06dPG0lm0qRJ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m5ubJk6cmO1b3KzXZ337fOXy0tLS9MEHH2Rbvp+fX46X7mUFjauHPm7RooVq166tN998U+fOncv2uuPHj+e6jUWlcuXKatq0qT799FOHenfs2KEff/xRd911l31abtuVk1tuuUXBwcGaNm2aUlNT7dN/+OEH7d69u0T9MOi9994rY0yOl01n7Qe9evWSu7u7JkyYkG1fM8bo5MmTluvp1KmTKlSooDlz5mjOnDlq1aqVw6WY58+f18WLFx1eU7t2bZUtW9ahD4vCXXfdpcTERM2ZM8c+LT09Xe+99578/f3towHeddddSk9P14cffmhvl5GRoffeey/bMmvXrq3ffvvNYb/etm1btqH3nel/6fL+58y+16lTJ3l6eurdd991eP3//d//KSkpqdj2vd69eysjI0Mvv/xytnnp6en2bcnPZw6A0u+GPuOUl0OHDmnGjBk6dOiQqlSpIunypXmLFy/WjBkzsl2icfHiRf3nP//R888/74pygVLr8ccf1/nz53XPPfeofv36SktL0/r16zVnzhzVrFnTfiN1nTp19MILL+jll19W27Zt1atXL3l5eWnjxo2qUqWKYmJi1KZNG5UvX14DBw7UE088IZvNplmzZuUYzFq0aKE5c+Zo1KhRatmypfz9/dW9e3fVrl1b5cqV07Rp01S2bFn5+fmpdevWCg8P1yeffKLo6Gg1bNhQgwcPVtWqVfXXX39pxYoVCggI0HfffVfc3adJkyYpOjpakZGRevjhh+3DkQcGBmr8+PEO2ytdHor9gQcekIeHh7p3757j/U8eHh56/fXXNXjwYEVFRalPnz724chr1qypp556qrg2z1KHDh3Uv39/vfvuu9q7d6+6du2qzMxMrVmzRh06dNCIESNUu3Zt/etf/9KYMWN04MAB9ezZU2XLllV8fLzmzZunoUOH6umnn85zPR4eHurVq5e++OILpaSk6M0333SY//vvv6tjx47q3bu3IiIiVKZMGc2bN09Hjx7VAw88UJRdoKFDh+qjjz7SoEGDtHnzZtWsWVNfffWV1q1bp8mTJ6ts2bKSpO7du+u2227T888/rwMHDigiIkLffPNNjl8gPPTQQ3r77bfVpUsXPfzwwzp27JimTZumhg0bOtzH40z/S5f3v6VLl+rtt99WlSpVFB4ertatW2dbb1BQkMaMGaMJEyaoa9euuvvuu7Vn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6enpOnXqFH3r5H771Vdf6fz58xowYIDDdPbbnFn17f79+/X+++9rx44datiwoSSpSZMmWrNmjaZOnapp06ax3+bCmf22c+fO2r9/v06cOKEyZcqoXLlyCg0NVa1atSTxmTBixAj7gBjVqlWzTw8NDVVaWprOnDnjcCxw9OhRe7848zcfGhqabbS4o0ePKiAgQD4+PkWxSSXGtfStM3Lr26x517PC6Ntdu3apY8eOGjp0qMaOHeswryTtt3zFU4IEBgYqKChIe/fu1aZNm+yX5T3//PP69ddftXXrVvtDkt555x3NmDFDkhQZGant27c7/IMTGxurgICAbAeuN6Lc+jYnWf2bdeBP3+Ytt76tWbOmqlSpkm1o0t9//101atSQdLlvz5w5o82bN9vnL1++XJmZmfYAeyNzZr/9v//7P919990KCgpymM5+m7fc+jbr/sarz4C4u7vbz6Ky3+bNmf22UqVKKleunJYvX65jx47p7rvvlnTj9q0xRiNGjNC8efO0fPlyhYeHO8xv0aKFPDw8tGzZMvu0PXv26NChQ4qMjJTk3N98ZGSkwzKy2mQt43pUGH3rjMjISK1evVqXLl2yT4uNjVW9evVUvnz5a9+QEqiw+nbnzp3q0KGDBg4cqFdeeSXbekrUflvsw1HcgM6ePWu2bNlitmzZYiSZt99+22zZssUcPHjQGGPMl19+aVasWGH2799v5s+fb2rUqGF69eqV5zJ11YhG6enpplGjRqZz585m69atZvHixSYoKMiMGTOmKDfN5a61b/ft22cmTpxoNm3aZOLj482CBQtMrVq1TLt27ext6NuC77fvvPOOCQgIMHPnzjV79+41Y8eONd7e3mbfvn32Nl27djXNmjUzP//8s1m7dq256aabTJ8+fYp1W4tbYX0m7N2719hsNvPDDz9km8d+W7C+TUtLM3Xq1DFt27Y1P//8s9m3b5958803jc1mM4sWLbK3Y78t2H47ffp0ExcXZ/bt22dmzZplKlSoYEaNGuXQ5kbs28cee8wEBgaalStXmoSEBPvj/Pnz9jaPPvqoqV69ulm+fLnZtGmTiYyMNJGRkfb5zvzN//HHH8bX19c888wzZvfu3Wbq1KnG3d3dLF68uFi3tzgVRt8ac/nzdsuWLWbYsGGmbt269r+FrFH0zpw5Y0JCQkz//v3Njh07zBdffGF8fX3N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+fmpTp06ql69erbQlJMGDRpo27ZtSklJsU9bt26d3NzcVK9ePQUGBqpy5cr6+eef7fPT09O1efNmh+UEBQUpISHB/jw5OVnx8fH25zfffLP+/PNP/f777znW4enpqYyMDMtaDx8+rMOHD9un7dq1S2fOnFFERITltuZXs2bNlJGRoWPHjqlOnToOj9DQUEmX+6pHjx7q16+fmjRpolq1auW6jQCAokVwAgAUmb59+8rb21sDBw7Ujh07tGLFCj3++OPq37+/QkJCJElPPvmkXnvtNc2fP1+//fab/vGPf+jMmTMOy7njjjs0a9YsrVmzRtu3b9fAgQMdztJERUWpXbt2uvfeexUbG6v4+Hj98MMPWrx4saTLl9edO3dOy5Yt04kTJ3T+/PlstXbq1EmNGzdW37599csvv2jDhg0aMGCAoqKidMsttxR639StW1d9+/bVgAED9M033yg+Pl4bNmxQTEyMFi1aJEm66aabFBsbq/Xr12v37t0aNmyYwyh/AIDiQ3ACABQZX19fLVmyRKdOnVLLli113333qWPHjg4//Dp69Gj1799fAwcOVGRkpMqWLat77rnHYTljxoxRVFSU/va3v6lbt27q2bOnateu7dDm66+/VsuWLdWnTx9FRETo2WeftZ9latOmjR599FHdf//9CgoK0htvvJGtVpvNpgULFqh8+fJq166dOnXqpFq1amnOnDlF0DOXzZgxQwMGDNDo0aNVr1499ezZUxs3blT16tUlSWPHjlXz5s3VpUsXtW/fXqGhoerZs2eR1QMAyJ3N5OfuWwAAAAC4AXHGCQAAAAAsEJwAAAAAwALBCQAAAAAsEJwAAAAAwALBCQAAAAAsEJwAAAAAwALBCQAAAAAsEJwAAAAAwALBCQAAAAAsEJwAAAAAwALBCQAAAAAs/D8spZsEcYvTQwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Преобразуем год производства в целочисленный тип\n", - "df1['Prod. year'] = df1['Prod. year'].astype(int)\n", - "\n", - "# Визуализация данных\n", - "plt.figure(figsize=(10, 6))\n", - "plt.scatter(df1['Prod. year'], df1['Price'])\n", - "plt.xlabel('Production Year')\n", - "plt.ylabel('Price')\n", - "plt.title('Scatter Plot of Price vs Production Year')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Зашумленность не очень высокая. Покрытие данных высокое и подошло бы для поставленной задачи по актуальности." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Выбросы:\n", - " ID Price Levy Manufacturer Model Prod. year \\\n", - "14 45732604 59464 891 HYUNDAI Santa FE 2016 \n", - "36 45369569 51746 1077 TOYOTA CHR Limited 2019 \n", - "47 45732544 55390 1017 HYUNDAI Santa FE 2017 \n", - "56 44316016 87112 - MERCEDES-BENZ GLA 250 2019 \n", - "73 45732043 53154 891 HYUNDAI Santa FE 2016 \n", - "... ... ... ... ... ... ... \n", - "19144 45733642 56814 1017 HYUNDAI Sonata 2017 \n", - "19161 45677230 64290 - LEXUS RX 450 F SPORT 2012 \n", - "19180 45803164 63886 1076 HYUNDAI Sonata 2020 \n", - "19188 45571892 61154 579 TOYOTA RAV 4 2017 \n", - "19211 45802856 50037 891 HYUNDAI Santa FE 2016 \n", - "\n", - " Category Leather interior Fuel type Engine volume Mileage Cylinders \\\n", - "14 Jeep Yes Diesel 2 76000 km 4.0 \n", - "36 Jeep No Petrol 2 10200 km 4.0 \n", - "47 Jeep Yes Diesel 2 100734 km 4.0 \n", - "56 Jeep Yes Petrol 2.0 Turbo 5323 km 4.0 \n", - "73 Jeep Yes Diesel 2 84506 km 4.0 \n", - "... ... ... ... ... ... ... \n", - "19144 Sedan Yes Petrol 2 67365 km 4.0 \n", - "19161 Jeep Yes Hybrid 3.5 97000 km 6.0 \n", - "19180 Sedan Yes LPG 2 5305 km 4.0 \n", - "19188 Jeep No Hybrid 2.5 71234 km 4.0 \n", - "19211 Jeep Yes Diesel 2 121902 km 4.0 \n", - "\n", - " Gear box type Drive wheels Doors Wheel Color Airbags \n", - "14 Automatic Front 04-May Left wheel White 4 \n", - "36 Tiptronic Front 04-May Left wheel Red 12 \n", - "47 Automatic Front 04-May Left wheel Black 4 \n", - "56 Tiptronic 4x4 04-May Left wheel Grey 0 \n", - "73 Automatic Front 04-May Left wheel Silver 4 \n", - "... ... ... ... ... ... ... \n", - "19144 Automatic Front 04-May Left wheel Black 4 \n", - "19161 Variator 4x4 04-May Left wheel Black 12 \n", - "19180 Automatic Front 04-May Left wheel Silver 4 \n", - "19188 Tiptronic 4x4 04-May Left wheel White 12 \n", - "19211 Automatic Front 04-May Left wheel Black 4 \n", - "\n", - "[1073 rows x 18 columns]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAIjCAYAAABswtioAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADQtUlEQVR4nOzdeXhTVfoH8G+SNk3XQAulZWtDQSGURZClQotiK0sFHFFEh0VFREQU0RFxYREV0Zmfu6h1FAd0VBwRECiCqCwWQWqRUkDEFgS6QAtt6ULa5v7+qDc2TXJz06TN0u/neXhmmnty77k3NzFvzjnvqxAEQQARERERERG1OKW7O0BERERERNRaMSAjIiIiIiJyEwZkREREREREbsKAjIiIiIiIyE0YkBEREREREbkJAzIiIiIiIiI3YUBGRERERETkJgzIiIiIiIiI3IQBGRERERERkZswICOiZpeXlweFQoFVq1a5uytm0tPT0b9/f2g0GigUCly8eLHZjnXnnXciNja22fbfGrnzvlq1ahUUCgXy8vJa/Nje4v7770dKSkqTn79//35cc801CA4OhkKhQFZWlus65yNiY2Nx5513mv7+7rvvoFAo8N1335kea42fPddeey2uvfZa09/u/KyYPHkyJk2a1OLHJe/CgIzICYcOHcItt9yCmJgYaDQadOrUCSkpKXj99deb7Zgff/wxXnnlFYvHz549iyVLlrTolxbxP/7iP39/f3Tr1g3Tpk3D77//7pJj/PDDD1iyZInLg6Xi4mJMmjQJgYGBePPNN7F69WoEBwdbbSt++Rb/aTQaXHHFFXjggQdQWFjo0n55kyVLlphdl6CgIOj1ejz11FMoKytzd/dc4vnnn8eXX37p7m4AADIyMqBUKrFw4UKr21esWAGFQoFNmza1cM8s5ebm4r333sMTTzxhdfuRI0dM7yVr7+2amhrceuutKCkpwcsvv4zVq1cjJiYGb731Vot/qY6NjcWNN95odZv4Gfj555+3aJ+8iSAIWL16NZKSktCmTRsEBQWhT58+eOaZZ1BRUdHk/ebk5GDJkiUe/6PIggUL8L///Q8HDx50d1fIkwlE1CR79uwR1Gq10L17d2HZsmVCWlqasGjRIuGGG24Q4uLimu24qampQkxMjMXj+/fvFwAIH3zwQbMdu7Fvv/1WACA8+OCDwurVq4X3339feOCBBwS1Wi2Eh4cLZ86cEQRBEHJzc5vct5deekkAIOTm5rq071u2bBEACNu2bbPb9oMPPhAACM8884ywevVqIS0tTZg+fbqgVCoFnU4nVFRU2N2HwWAQqqurXdF1j7F48WIBgLBy5Uph9erVwsqVK4W//e1vAgAhISFBMBqNzXp8Z+4ruYKDg4Xp06dbPF5bWytUVVU1+zk2dt999wn+/v5Cdna22eN5eXlCUFCQcOutt7Zof2x56KGHhCuuuMLm9ieeeEKIiooSAgIChLS0NIvtR44cEQBYbOvdu7cwYsQIV3dXUkxMjJCammp1m/gZuHbt2hbtkygmJsbs/hT78+2335oec+dnT21trTBp0iQBgJCYmCi8/PLLwjvvvCNMmTJFUCqVQnx8vFBQUNCkfa9du9biXEUjRowwu0+MRqNQVVUl1NbWNvFMnDN48GBh6tSpbjk2eQc/dwSBRL7gueeeg1arxf79+9GmTRuzbUVFRe7pVDOoqKiwOXIkSkxMxC233AIAuOuuu3DFFVfgwQcfxIcffmjz13x3E1+jxq+dlDFjxuDqq68GANxzzz2IiIjA//3f/2H9+vW4/fbbrT5HvH7+/v5O99lT3XLLLWjXrh0A4L777sPEiRPxxRdfYO/evUhISLD6nMrKSgQFBbVkN11KpVJBpVK1+HFfeOEFrF+/HrNmzcKuXbugUCgAAHPnzoW/vz9effXVFumH1OtXU1ODjz76CPfdd5/V7YIg4OOPP8Ydd9yB3NxcfPTRR7jnnnvM2jTl/dlUtbW1MBqNUKvVzX4sd3DnZ8+LL76Izz77DI8++iheeukl0+P33nsvJk2ahJtuugl33nkntmzZ0qz9EEdjXUXOfxcbmjRpEhYvXoy33noLISEhLusH+Q5OWSRqohMnTqB3795WvzBERkZaPLZmzRoMHjwYQUFBaNu2LZKSkvD111+btq9fvx6pqano2LEjAgICEBcXh2XLlqGurs7U5tprr8WmTZtw8uRJ0zSx2NhYfPfddxg0aBCA+oBI3NZwas+PP/6I0aNHQ6vVIigoCCNGjMCePXvM+ihOQcvJycEdd9yBtm3bYvjw4Q5fm5EjRwKon7YkZceOHUhMTERwcDDatGmDCRMm4MiRI2b9+cc//gEA0Ol0pvOyN0Vl7dq1GDhwIAIDA9GuXTtMmTIFZ86cMW2/9tprMX36dADAoEGDoFAozNZhNPU877zzToSEhODEiRMYO3YsQkND8fe//920rfE6DqPRiFdffRV9+vSBRqNB+/btMXr0aPz0009m7dasWWM6n/DwcEyePBl//PGHZN8+//xzKBQKfP/99xbb3nnnHSgUCmRnZwMACgoKcNddd6Fz584ICAhAdHQ0JkyY0OSpQI2vy7XXXov4+HgcOHAASUlJCAoKMk1lKyoqwowZM9ChQwdoNBr069cPH374ocU+L168iDvvvBNarRZt2rTB9OnTrU51a7x2RNSU669QKFBRUYEPP/zQdO+J94mtNWRvvfUWevfujYCAAHTs2BFz5syx6Kd4PXJycnDdddchKCgInTp1wosvvmjnygJarRavvvoq9uzZg/feew8AsG7dOmzcuBEvvPACoqOjYTQa8corr6B3797QaDTo0KEDZs2ahQsXLpjtS85nTsP+Wnv9rNm9ezfOnz+P5ORkq9v37NmDvLw8TJ48GZMnT8bOnTtx+vRp0/Y777wTI0aMAADceuutUCgUuPbaaxEbG4vDhw/j+++/N70eDV/rixcvYt68eejSpQsCAgLQvXt3rFixAkaj0dRGXEv0z3/+E6+88gri4uIQEBCAnJwcu9derpMnT+L+++/HlVdeicDAQERERODWW2+1uFfEe2jPnj2YP38+2rdvj+DgYPztb3/DuXPnzNoKgoBnn30WnTt3RlBQEK677jocPnxYVn8a3/sNr8G7775rugaDBg3C/v37LZ6/du1a6PV6aDQaxMfHY926dbLWpVVVVeGll17CFVdcgeXLl1tsHzduHKZPn4709HTs3bvX9LhCocCSJUss2jdcL7dq1SrceuutAIDrrrvOdD80XDvXkK01ZEePHsUtt9yC8PBwaDQaXH311diwYYNZG/F1+v7773H//fcjMjISnTt3BgCUl5dj3rx5iI2NRUBAACIjI5GSkoLMzEyzfaSkpKCiogLbtm2TumTUinGEjKiJYmJikJGRgezsbMTHx0u2Xbp0KZYsWYJrrrkGzzzzDNRqNX788Ufs2LEDN9xwA4D6D/2QkBDMnz8fISEh2LFjBxYtWoSysjLTL4tPPvkkSktLcfr0abz88ssAgJCQEPTq1QvPPPMMFi1ahHvvvReJiYkAgGuuuQZAfeAzZswYDBw4EIsXL4ZSqcQHH3yAkSNHYteuXRg8eLBZf2+99Vb06NEDzz//PARBcPjanDhxAgAQERFhs8327dsxZswYdOvWDUuWLEFVVRVef/11DBs2DJmZmYiNjcXNN9+MX3/9Ff/973/x8ssvm0Zh2rdvb3O/q1atwl133YVBgwZh+fLlKCwsNH2B/fnnn9GmTRs8+eSTuPLKK/Huu+/imWeegU6nQ1xcnEvOs7a2FqNGjcLw4cPxz3/+U3IUaMaMGVi1ahXGjBmDe+65B7W1tdi1axf27t1rGol77rnn8PTTT2PSpEm45557cO7cObz++utISkoynY81qampCAkJwWeffWb6civ69NNP0bt3b9N9O3HiRBw+fBhz585FbGwsioqKsG3bNpw6dapJyQCsXZfi4mKMGTMGkydPxpQpU9ChQwdUVVXh2muvxW+//YYHHngAOp0Oa9euxZ133omLFy/ioYceAlD/ZXTChAnYvXs37rvvPvTq1Qvr1q0zBdVNZe/6r169Gvfccw8GDx6Me++9FwAk75MlS5Zg6dKlSE5OxuzZs3Hs2DGsXLkS+/fvx549e8xGKi5cuIDRo0fj5ptvxqRJk/D5559jwYIF6NOnD8aMGSPZ71tvvRWpqalYsGABrr/+ejz00EO45pprMGvWLADArFmzTO+DBx98ELm5uXjjjTfw888/m/VDzmeOyNrrZ8sPP/wAhUKBq666yur2jz76CHFxcRg0aBDi4+MRFBSE//73v6YfX2bNmoVOnTrh+eefx4MPPohBgwahQ4cOqKiowNy5cxESEoInn3wSAEz9qKysxIgRI3DmzBnMmjULXbt2xQ8//ICFCxciPz/fYt3tBx98gOrqatx7770ICAhAeHi45DWvqanB+fPnLR4vLS21eGz//v344YcfMHnyZHTu3Bl5eXlYuXIlrr32WuTk5Fh8JsydOxdt27bF4sWLkZeXh1deeQUPPPAAPv30U1ObRYsW4dlnn8XYsWMxduxYZGZm4oYbboDBYJDst5SPP/4Y5eXlmDVrFhQKBV588UXcfPPN+P333033yKZNm3DbbbehT58+WL58OS5cuIAZM2agU6dOdve/e/duXLhwAQ899BD8/Kx/3Zw2bRo++OADfPXVVxg6dKjsviclJeHBBx/Ea6+9hieeeAK9evUCANP/ynH48GEMGzYMnTp1wuOPP47g4GB89tlnuOmmm/C///0Pf/vb38za33///Wjfvj0WLVpkWvt233334fPPP8cDDzwAvV6P4uJi7N69G0eOHMGAAQNMz9Xr9QgMDMSePXss9ksEgGvIiJrq66+/FlQqlaBSqYSEhAThscceE7Zu3SoYDAazdsePHxeUSqXwt7/9TairqzPb1nD9SWVlpcUxZs2aJQQFBZnN/3d0DZnRaBR69OghjBo1yuJ4Op1OSElJMT0mrgm6/fbbZV0Dcb3C+++/L5w7d044e/assGnTJiE2NlZQKBTC/v37BUGwvtanf//+QmRkpFBcXGx67ODBg4JSqRSmTZtmesyRNWQGg0GIjIwU4uPjhaqqKtPjX331lQBAWLRokekxcV2Y2EcpYtvt27cL586dE/744w/hk08+ESIiIoTAwEDh9OnTgiAIwvTp0wUAwuOPP26xj+nTp5u9bjt27DCtv2tMfJ3y8vIElUolPPfcc2bbDx06JPj5+Vk83tjtt98uREZGmq2byM/PF5RKpfDMM88IgiAIFy5cEAAIL730kt3r0Jh4vxw7dkw4d+6ckJubK7zzzjtCQECA0KFDB9PauhEjRggAhLffftvs+a+88ooAQFizZo3pMYPBICQkJAghISFCWVmZIAiC8OWXXwoAhBdffNHUrra2VkhMTLS4rxqvHRE15foLgu01ZOI9Id6XRUVFglqtFm644Qaz9/kbb7xheo807CMA4T//+Y/pscuXLwtRUVHCxIkTLY5lTV5enhAcHCyEh4cL/v7+wqFDhwRBEIRdu3YJAISPPvrIrH16errF43I/c2y9frZMmTJFiIiIsLrNYDAIERERwpNPPml67I477hD69etn1s7W2ixba8iWLVsmBAcHC7/++qvZ448//rigUqmEU6dOCYLw12dRWFiYUFRUJOt8YmJiBACS/xr209p1zcjIsHjNxXsoOTnZ7J57+OGHBZVKJVy8eFEQhL/urdTUVLN2TzzxhADA7hqyxve+eA0iIiKEkpIS0+Pr168XAAgbN240PdanTx+hc+fOQnl5uemx7777TgBg9b9DDYnv73Xr1tlsU1JSIgAQbr75ZtNjAITFixdbtG28Xs6RNWTW/ht0/fXXC3369DG7141Go3DNNdcIPXr0MD0mvk7Dhw+3WIOm1WqFOXPm2Dy/hq644gphzJgxstpS68Mpi0RNlJKSgoyMDIwfPx4HDx7Eiy++iFGjRqFTp05mUx6+/PJLGI1GLFq0CEql+VtOXP8BAIGBgab/X15ejvPnzyMxMRGVlZU4evRok/uZlZWF48eP44477kBxcTHOnz+P8+fPo6KiAtdffz127txpNqUHgM21H7bcfffdaN++PTp27IjU1FTTNC9xlKex/Px8ZGVl4c477zT7Zbpv375ISUnB5s2bHT9RAD/99BOKiopw//33m60XSE1NRc+ePZ3OPpecnIz27dujS5cumDx5MkJCQrBu3TqLX4tnz55td1//+9//oFAosHjxYott4n3xxRdfwGg0YtKkSabX7fz584iKikKPHj3w7bffSh7jtttuQ1FRkdk0ns8//xxGoxG33XYbgPr7Tq1W47vvvrOY0ibXlVdeifbt20On02HWrFno3r07Nm3aZDYSEBAQgLvuusvseZs3b0ZUVJTZ+jt/f388+OCDuHTpkmm65ebNm+Hn52d2XVUqFebOnduk/gLyrr8jtm/fDoPBgHnz5pm9z2fOnImwsDCLey8kJARTpkwx/a1WqzF48GDZ2UljYmKwePFilJSUYP78+abRzrVr10Kr1SIlJcXsnhk4cCBCQkLM7hlHPnOsvX62FBcXo23btla3bdmyBcXFxWav+e23346DBw/KnoJnzdq1a5GYmIi2bduanXdycjLq6uqwc+dOs/YTJ06UHGlvbMiQIdi2bZvFv3/+858WbRte15qaGhQXF6N79+5o06aNxVQ2oH49VcN7LjExEXV1dTh58iSAv+6tuXPnmrWbN2+e7P5bc9ttt5m9TuLMCvEePHv2LA4dOoRp06aZrXsaMWIE+vTpY3f/5eXlAIDQ0FCbbcRtLZ2VtaSkBDt27MCkSZNM9/758+dRXFyMUaNG4fjx42bT3IH693LjdaNt2rTBjz/+iLNnz9o9pnhvElnDKYtEThg0aBC++OILGAwGHDx4EOvWrcPLL7+MW265BVlZWdDr9Thx4gSUSiX0er3kvg4fPoynnnoKO3bssPiPk7VpMXIdP34cACSnd5WWlpr9h1mn0zl0jEWLFiExMREqlQrt2rVDr169bE5RAWD6onHllVdabOvVqxe2bt3q8KJpe/vt2bMndu/e7dD+GnvzzTdxxRVXwM/PDx06dMCVV15pEWT7+fmZ1hdIOXHiBDp27Cg5Ver48eMQBAE9evSwut3eYn1xzeCnn36K66+/HkD9dMX+/fvjiiuuAFD/RXvFihV45JFH0KFDBwwdOhQ33ngjpk2bhqioKLvnAdQHN2FhYfD390fnzp2tTuvr1KmTRdKEkydPokePHhbXUJx2JL6eJ0+eRHR0tMVieGuvs1xyrr8jbN17arUa3bp1M20Xde7c2SLwa9u2LX755RfZxxTXjTb84eP48eMoLS21uo4VME845MhnjrXXT4pgY6rzmjVroNPpEBAQgN9++w1A/TTQoKAgfPTRR3j++edlH6Oh48eP45dffrEZZDVOtOToZ1y7du2sromz9jlXVVWF5cuX44MPPsCZM2fMroW1z/KuXbua/S1+Fos/kIj3TuPPgfbt29sMfOWQe9zu3btbPLd79+5Wg8uGxGBLDMyskRO0NYfffvsNgiDg6aefxtNPP221TVFRkdmPbdbumRdffBHTp09Hly5dMHDgQIwdOxbTpk1Dt27dLNoKgtCkH3uodWBARuQCarUagwYNwqBBg3DFFVfgrrvuwtq1a63++m7NxYsXMWLECISFheGZZ55BXFwcNBoNMjMzsWDBAosRLEeIz33ppZfQv39/q20af9Ft+AuvHH369LG5gN+XDB482OaonyggIMAiwGgqo9EIhUKBLVu2WM3oZy9bV0BAAG666SasW7cOb731FgoLC7Fnzx6LL73z5s3DuHHj8OWXX2Lr1q14+umnsXz5cuzYscPmOqCGkpKSTOv7bHH0nmoqhUJhNRhonKjC3WxlaLQVyMhlNBoRGRmJjz76yOp2MWBx9DPHkdcvIiLC6mhrWVkZNm7ciOrqaqs/Mnz88cd47rnnmvSl1Wg0IiUlBY899pjV7eIPEKLmvB/nzp2LDz74APPmzUNCQgK0Wi0UCgUmT55s9bO8ue4Fe5r7uOIPK7/88gtuuukmq23EHyDs/WAJuPY9LL4Ojz76KEaNGmW1TeNA1No9M2nSJCQmJmLdunX4+uuv8dJLL2HFihX44osvLNaCXrhwweaPa0QMyIhcTPzCnp+fD6D+11+j0YicnBybAdF3332H4uJifPHFF0hKSjI9bi1Loa0vK7YeF0crwsLCPCZoiomJAQAcO3bMYtvRo0fRrl070+iYI1/OGu5XzPQnOnbsmGm7J4iLi8PWrVtRUlJic5QmLi4OgiBAp9NZfKGU67bbbsOHH36Ib775BkeOHIEgCKbpio2P9cgjj+CRRx7B8ePH0b9/f/zrX//CmjVrmnRcOWJiYvDLL7/AaDSaBbHidDnx9YqJicE333yDS5cumQWh1u6ftm3bWp3213iESs71B+Tffw3vvYa/jhsMBuTm5rbYey8uLg7bt2/HsGHDJIMORz5zHNWzZ0989NFHKC0thVarNT3+xRdfoLq6GitXrrQI4I8dO4annnoKe/bskczsKvU5d+nSJY/4jPv8888xffp0/Otf/zI9Vl1d3eTi9uK9dfz4cbN769y5c02eZuzIccWRzIasPdbY8OHD0aZNG3z88cd48sknrQaA//nPfwDArPB227ZtLa6VwWAw/TdV5Mxok3gd/f39nb5noqOjcf/99+P+++9HUVERBgwYgOeee84sIKutrcUff/yB8ePHO3Us8l1cQ0bURN9++63VXxLF9U/i1KWbbroJSqUSzzzzjMWvo+Lzxf9QNdyfwWDAW2+9ZbH/4OBgq9NexACm8X/IBg4ciLi4OPzzn//EpUuXLJ7XOL1yS4iOjkb//v3x4YcfmvU3OzsbX3/9NcaOHWt6zNZ5WXP11VcjMjISb7/9Ni5fvmx6fMuWLThy5AhSU1Nddg7OmjhxIgRBwNKlSy22iffBzTffDJVKhaVLl1rca4IgoLi42O5xkpOTER4ejk8//RSffvopBg8ebDb1prKyEtXV1WbPiYuLQ2hoqNk1bA5jx45FQUGBWTa52tpavP766wgJCTFlhxw7dixqa2uxcuVKU7u6ujq8/vrrFvuMi4vD0aNHze7rgwcPWpR4kHP9gfr7T869l5ycDLVajddee83s+f/+979RWlraYvfepEmTUFdXh2XLlllsq62tNZ2LI585jkpISIAgCDhw4IDZ42vWrEG3bt1w33334ZZbbjH79+ijjyIkJMTmyJ7I1usxadIkZGRkYOvWrRbbLl68iNraWqfOyREqlcri/fr66683eYQnOTkZ/v7+eP3118322zhzpKt17NgR8fHx+M9//mP2347vv/8ehw4dsvv8oKAgPProozh27JgpK2ZDmzZtwqpVqzBq1CizDItxcXEWa/7effddi+vnyH8bGouMjMS1116Ld955xyLQA+T9d7Gurs7iv8WRkZHo2LGjxWdnTk4OqqurTZmPiRrjCBlRE82dOxeVlZX429/+hp49e8JgMOCHH37Ap59+itjYWNMC+O7du+PJJ5/EsmXLkJiYiJtvvhkBAQHYv38/OnbsiOXLl+Oaa65B27ZtMX36dDz44INQKBRYvXq11YBv4MCB+PTTTzF//nwMGjQIISEhGDduHOLi4tCmTRu8/fbbCA0NRXBwMIYMGQKdTof33nsPY8aMQe/evXHXXXehU6dOOHPmDL799luEhYVh48aNLX358NJLL2HMmDFISEjAjBkzTGnvtVqtWQ2agQMHAqhP+T958mT4+/tj3LhxVteX+fv7Y8WKFbjrrrswYsQI3H777aa097GxsXj44Ydb6vTsuu666zB16lS89tprOH78OEaPHg2j0Yhdu3bhuuuuwwMPPIC4uDg8++yzWLhwIfLy8nDTTTchNDQUubm5WLduHe699148+uijksfx9/fHzTffjE8++QQVFRUWSQh+/fVXXH/99Zg0aRL0ej38/Pywbt06FBYWYvLkyc15CXDvvffinXfewZ133okDBw4gNjYWn3/+Ofbs2YNXXnnFtK5k3LhxGDZsGB5//HHk5eVBr9fjiy++sPrDxN13343/+7//w6hRozBjxgwUFRXh7bffRu/evc3WScm5/kD9/bd9+3b83//9Hzp27AidTochQ4ZYHLd9+/ZYuHAhli5ditGjR2P8+PE4duwY3nrrLQwaNMgsgUdzGjFiBGbNmoXly5cjKysLN9xwA/z9/XH8+HGsXbsWr776Km655RaHPnMcNXz4cERERGD79u2mkeqzZ8/i22+/xYMPPmj1OQEBARg1ahTWrl2L1157zea+Bw4ciJUrV+LZZ59F9+7dERkZiZEjR+If//gHNmzYgBtvvBF33nknBg4ciIqKChw6dAiff/458vLy7E6rdZUbb7wRq1evhlarhV6vR0ZGBrZv3y5ZBkRK+/bt8eijj2L58uW48cYbMXbsWPz888/YsmVLs5/T888/jwkTJmDYsGG46667cOHCBbzxxhuIj4+3+gNfY48//jh+/vlnrFixAhkZGZg4cSICAwOxe/durFmzBr169bKoO3jPPfeYCsynpKTg4MGD2Lp1q8W59u/fHyqVCitWrEBpaSkCAgIwcuRIm+snG3vzzTcxfPhw9OnTBzNnzkS3bt1QWFiIjIwMnD59GgcPHpR8fnl5OTp37oxbbrkF/fr1Q0hICLZv3479+/ebjY4CwLZt2xAUFISUlBRZfaNWqIWyORL5nC1btgh333230LNnTyEkJERQq9VC9+7dhblz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1re2+hSAWLNmjbnM9evXxdNPPy3CwsKEXq8XDz30kCgsLLSoR8n7fceOHaJ///5Cp9OJbt26WZyjLVKrb0eMGGGznvz8fHOZH3/8Udx9993C399fdO7cWSxbtsxFV+keavTt4sWLbdYRHx9vcS5Pum81Qgjh6CgbERERERERtRzXkBEREREREbkJAzIiIiIiIiI3YUBGRERERETkJgzIiIiIiIiI3IQBGRERERERkZswICMiIiIiInITBmRERERERERuwoCMiIiIiIjITRiQERFRu/H4449j0qRJTj9PQkICVqxY4fTzEBGR92NARkREbvX4449Do9FAo9FAp9Ohe/fueOWVV9DQ0ODupslau3YtQkNDrV4/cOAA5syZ47Tzrlu3DkFBQTh9+rTF65cuXUJYWBjefvttp52biIjUxYCMiIjcbty4cSgsLERubi4WLFiAJUuW4I033rBZtq6uzsWta7nIyEjo9Xqn1T99+nSMHTsWjz/+OIxGo/n12bNnY9CgQXjmmWdUP6c39DsRkTdiQEZERG7n7++PmJgYxMfH46mnnsLo0aOxadMmAD9PM3z11VfRqVMn9OrVCwBw7NgxjBo1CoGBgYiIiMCcOXNw7do1c52NjY14/vnnERoaioiICLz44osQQlic19bUwv79+2PJkiXmn8vKyjB37lxER0cjICAAffr0webNm7Fz507MmjUL5eXl5hE+0+81r/fcuXOYOHEigoODYTAY8Mgjj6C4uNh8fMmSJejfvz/WrVuHhIQEhISE4Fe/+hUqKyvt9tmqVatw6tQpvPnmmwCaRuv27t2LNWvWoK6uDi+88AI6d+6MoKAgDBkyBDt37jT/7pUrVzBlyhR07twZer0effv2xccff2xR/z333IP58+fj2WefRceOHTF27Fi7bSEiotZjQEZERB4nMDDQYkRm+/btOHnyJNLS0rB582ZUVVVh7NixCAsLw4EDB7BhwwZ8++23mD9/vvl3/va3v2Ht2rX44IMP8N1336G0tBQbN25sUTuMRiPGjx+PvXv3Yv369cjOzsayZcvg4+ODoUOHYsWKFTAYDCgsLERhYSFeeOEFm3VMnDgRpaWl2LVrF9LS0nDmzBk8+uijFuXy8vLw5ZdfYvPmzdi8eTN27dqFZcuW2W1bZGQk3nvvPbz88stIS0vDc889h7feegtxcXGYP38+MjIy8Mknn+Do0aP4r//6L4wbNw65ubkAgJqaGgwaNAhbtmxBVlYW5syZg+nTp2P//v0W5/jnP/8JnU6HvXv3YuXKlS3qOyIiUkgQERG50cyZM8XEiROFEEIYjUaRlpYm/P39xQsvvGA+Hh0dLWpra82/895774mwsDBx7do182tbtmwRWq1WFBUVCSGEiI2NFa+//rr5eH19vejSpYv5XEIIER8fL5YvX27Rnn79+onFixcLIYT45ptvhFarFSdPnrTZ9jVr1oiQkBCr12+u9//+7/+Ej4+POHfunPn48ePHBQCxf/9+IYQQixcvFnq9XlRUVJjLLFy4UAwZMsTmeW82Y8YModVqzdd19uxZ4ePjIy5evGhR7t577xWpqal265kwYYJYsGCB+ecRI0aIAQMGyJ6fiIgc4+vugJCIiGjz5s0IDg5GfX09jEYjHnvsMYtpg3379oVOpzP/nJOTg379+iEoKMj82rBhw2A0GnHy5EkEBASgsLAQQ4YMMR/39fXFHXfcYTVtUcqRI0fQpUsX9OzZs9XXlpOTg7i4OMTFxZlfS0pKQmhoKHJycjB48GAATdMcO3ToYC4TGxuLkpIS2fpffvllfPjhh1i0aBGApqmcjY2NVm2ura1FREQEgKbpnK+99ho+++wzXLx4EXV1daitrbVa9zZo0KDWXTQRESnGgIyIiNxu5MiRePfdd6HT6dCpUyf4+lr+5+nmwEtNWq3WKkCrr683///AwECnnNcWPz8/i581Go1Fwg57TH1l+t9r167Bx8cHhw4dgo+Pj0XZ4OBgAMAbb7yBt956CytWrEDfvn0RFBSEZ5991ipxh7P6nYiIfsY1ZERE5HZBQUHo3r07unbtahWM2dK7d2/8+OOPqKqqMr+2d+9eaLVa9OrVCyEhIYiNjcW+ffvMxxsaGnDo0CGLeiIjI1FYWGj+uaKiAvn5+eafb7/9dly4cAGnTp2y2Q6dTofGxkbZtp4/fx7nz583v5adnY2ysjIkJSXJXmtLDRgwAI2NjSgpKUH37t0t/sXExABo6quJEydi2rRp6NevH7p162b3GomIyLkYkBERkdeZOnUqAgICMHPmTGRlZWHHjh34zW9+g+nTpyM6OhoA8Lvf/Q7Lli3Dl19+iRMnTuDpp59GWVmZRT2jRo3CunXrsGfPHhw7dgwzZ860GFUaMWIEUlJSMHnyZKSlpSE/Px9ff/01tm3bBqBpmuG1a9ewfft2XL58GdXV1VZtHT16NPr27YupU6fi8OHD2L9/P2bMmIERI0bgjjvuUL1vevbsialTp2LGjBn44osvkJ+fj/3792Pp0qXYsmULAKBHjx5IS0vD999/j5ycHMydO9ci6yMREbkOAzIiIvI6er0e33zzDUpLSzF48GD88pe/xL333muxIfKCBQswffp0zJw5E8nJyejQoQMeeughi3pSU1MxYsQI/OIXv8CECRMwadIk3HLLLRZlPv/8cwwePBhTpkxBUlISXnzxRfOo2NChQzFv3jw8+uijiIyMxOuvv27VVo1Gg6+++gphYWFISUnB6NGj0a1bN3z66adO6Jkma9aswYwZM7BgwQL06tULkyZNwoEDB9C1a1cAwKJFizBw4ECMHTsW99xzD2JiYjBp0iSntYeIiOzTiJasbiYiIiIiIiLVcISMiIiIiIjITRiQERERERERuQkDMiIiIiIiIjdhQEZEREREROQmDMiIiIiIiIjchAEZERERERGRmzAgIyIiIiIichMGZERERERERG7CgIyIiIiIiMhNGJARERERERG5CQMyIiIiIiIiN/l/lHXYWyotWAEAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Преобразуем год производства в целочисленный тип\n", - "df1['Prod. year'] = df1['Prod. year'].astype(int)\n", - "\n", - "# Статистический анализ для определения выбросов\n", - "Q1 = df1['Price'].quantile(0.25)\n", - "Q3 = df1['Price'].quantile(0.75)\n", - "IQR = Q3 - Q1\n", - "\n", - "# Определение порога для выбросов\n", - "threshold = 1.5 * IQR\n", - "outliers = (df1['Price'] < (Q1 - threshold)) | (df1['Price'] > (Q3 + threshold))\n", - "\n", - "# Вывод выбросов\n", - "print(\"Выбросы:\")\n", - "print(df1[outliers])\n", - "\n", - "# Обработка выбросов\n", - "# В данном случае мы заменим выбросы на медианное значение\n", - "median_price = df1['Price'].median()\n", - "df1.loc[outliers, 'Price'] = median_price\n", - "\n", - "# Визуализация данных после обработки\n", - "plt.figure(figsize=(10, 6))\n", - "plt.scatter(df1['Prod. year'], df1['Price'])\n", - "plt.xlabel('Production Year')\n", - "plt.ylabel('Price')\n", - "plt.title('Scatter Plot of Price vs Production Year (After Handling Outliers)')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Очистим от строк с пустыми значениями наш датасет" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Количество удаленных строк: 0\n", - "\n", - "DataFrame после удаления строк с пропущенными значениями:\n", - " ID Price Levy Manufacturer Model Prod. year Category \\\n", - "0 45654403 13328 1399 LEXUS RX 450 2010 Jeep \n", - "1 44731507 16621 1018 CHEVROLET Equinox 2011 Jeep \n", - "2 45774419 8467 - HONDA FIT 2006 Hatchback \n", - "3 45769185 3607 862 FORD Escape 2011 Jeep \n", - "4 45809263 11726 446 HONDA FIT 2014 Hatchback \n", - "... ... ... ... ... ... ... ... \n", - "19232 45798355 8467 - MERCEDES-BENZ CLK 200 1999 Coupe \n", - "19233 45778856 15681 831 HYUNDAI Sonata 2011 Sedan \n", - "19234 45804997 26108 836 HYUNDAI Tucson 2010 Jeep \n", - "19235 45793526 5331 1288 CHEVROLET Captiva 2007 Jeep \n", - "19236 45813273 470 753 HYUNDAI Sonata 2012 Sedan \n", - "\n", - " Leather interior Fuel type Engine volume Mileage Cylinders \\\n", - "0 Yes Hybrid 3.5 186005 km 6.0 \n", - "1 No Petrol 3 192000 km 6.0 \n", - "2 No Petrol 1.3 200000 km 4.0 \n", - "3 Yes Hybrid 2.5 168966 km 4.0 \n", - "4 Yes Petrol 1.3 91901 km 4.0 \n", - "... ... ... ... ... ... \n", - "19232 Yes CNG 2.0 Turbo 300000 km 4.0 \n", - "19233 Yes Petrol 2.4 161600 km 4.0 \n", - "19234 Yes Diesel 2 116365 km 4.0 \n", - "19235 Yes Diesel 2 51258 km 4.0 \n", - "19236 Yes Hybrid 2.4 186923 km 4.0 \n", - "\n", - " Gear box type Drive wheels Doors Wheel Color Airbags \n", - "0 Automatic 4x4 04-May Left wheel Silver 12 \n", - "1 Tiptronic 4x4 04-May Left wheel Black 8 \n", - "2 Variator Front 04-May Right-hand drive Black 2 \n", - "3 Automatic 4x4 04-May Left wheel White 0 \n", - "4 Automatic Front 04-May Left wheel Silver 4 \n", - "... ... ... ... ... ... ... \n", - "19232 Manual Rear 02-Mar Left wheel Silver 5 \n", - "19233 Tiptronic Front 04-May Left wheel Red 8 \n", - "19234 Automatic Front 04-May Left wheel Grey 4 \n", - "19235 Automatic Front 04-May Left wheel Black 4 \n", - "19236 Automatic Front 04-May Left wheel White 12 \n", - "\n", - "[19237 rows x 18 columns]\n" - ] - } - ], - "source": [ - "# Удаление строк с пропущенными значениями\n", - "df_dropna = df1.dropna()\n", - "\n", - "# Вывод количества удаленных строк\n", - "num_deleted_rows = len(df1) - len(df_dropna)\n", - "print(f\"\\nКоличество удаленных строк: {num_deleted_rows}\")\n", - "\n", - "print(\"\\nDataFrame после удаления строк с пропущенными значениями:\")\n", - "print(df_dropna)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Теперь создадим выборки" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 11542\n", - "Размер контрольной выборки: 3847\n", - "Размер тестовой выборки: 3848\n" - ] - } - ], - "source": [ - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//car_price_prediction.csv\")\n", - "\n", - "# Разделение данных на обучающую и временную выборки\n", - "train_df, temp_df = train_test_split(df, test_size=0.4, random_state=42)\n", - "\n", - "# Разделение остатка на контрольную и тестовую выборки\n", - "val_df, test_df = train_test_split(temp_df, test_size=0.5, random_state=42)\n", - "\n", - "# Проверка размеров выборок\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))\n", - "\n", - "# Сохранение выборок в файлы\n", - "train_df.to_csv(\"..//static//csv//train_data.csv\", index=False)\n", - "val_df.to_csv(\"..//static//csv//val_data.csv\", index=False)\n", - "test_df.to_csv(\"..//static//csv//test_data.csv\", index=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Проанализируем сбалансированность выборок" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение Category в обучающей выборке:\n", - "Category\n", - "Sedan 5289\n", - "Jeep 3246\n", - "Hatchback 1684\n", - "Minivan 396\n", - "Coupe 318\n", - "Universal 216\n", - "Microbus 184\n", - "Goods wagon 151\n", - "Pickup 31\n", - "Cabriolet 20\n", - "Limousine 7\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 45.82%\n", - "Процент автомобилей категории 'Джип': 28.12%\n", - "\n", - "Распределение Category в контрольной выборке:\n", - "Category\n", - "Sedan 1697\n", - "Jeep 1109\n", - "Hatchback 608\n", - "Minivan 129\n", - "Coupe 105\n", - "Universal 73\n", - "Microbus 57\n", - "Goods wagon 42\n", - "Pickup 17\n", - "Cabriolet 9\n", - "Limousine 1\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 44.11%\n", - "Процент автомобилей категории 'Джип': 28.83%\n", - "\n", - "Распределение Category в тестовой выборке:\n", - "Category\n", - "Sedan 1750\n", - "Jeep 1118\n", - "Hatchback 555\n", - "Minivan 122\n", - "Coupe 109\n", - "Universal 75\n", - "Microbus 65\n", - "Goods wagon 40\n", - "Cabriolet 7\n", - "Pickup 4\n", - "Limousine 3\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 45.48%\n", - "Процент автомобилей категории 'Джип': 29.05%\n", - "\n", - "Необходима аугментация данных для балансировки классов.\n", - "Необходима аугментация данных для балансировки классов.\n", - "Необходима аугментация данных для балансировки классов.\n" - ] - } - ], - "source": [ - "train_df = pd.read_csv(\"..//static//csv//train_data.csv\")\n", - "val_df = pd.read_csv(\"..//static//csv//val_data.csv\")\n", - "test_df = pd.read_csv(\"..//static//csv//test_data.csv\")\n", - "\n", - "# Оценка сбалансированности\n", - "def check_balance(df, name):\n", - " counts = df['Category'].value_counts()\n", - " print(f\"Распределение Category в {name}:\")\n", - " print(counts)\n", - " print(f\"Процент автомобилей категории 'Седан': {counts['Sedan'] / len(df) * 100:.2f}%\")\n", - " print(f\"Процент автомобилей категории 'Джип': {counts['Jeep'] / len(df) * 100:.2f}%\")\n", - " print()\n", - "\n", - "# Определение необходимости аугментации данных\n", - "def need_augmentation(df):\n", - " counts = df['Category'].value_counts()\n", - " ratio = counts['Sedan'] / counts['Jeep']\n", - " if ratio > 1.5 or ratio < 0.67:\n", - " print(\"Необходима аугментация данных для балансировки классов.\")\n", - " else:\n", - " print(\"Аугментация данных не требуется.\")\n", - " \n", - "check_balance(train_df, \"обучающей выборке\")\n", - "check_balance(val_df, \"контрольной выборке\")\n", - "check_balance(test_df, \"тестовой выборке\")\n", - "\n", - "need_augmentation(train_df)\n", - "need_augmentation(val_df)\n", - "need_augmentation(test_df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "По результатам анализа требуется приращение, соотношения отзывов вне допустимого диапазона" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Оверсэмплинг:\n", - "Распределение Category в обучающей выборке:\n", - "Category\n", - "Jeep 5289\n", - "Hatchback 5289\n", - "Sedan 5289\n", - "Goods wagon 5289\n", - "Cabriolet 5289\n", - "Universal 5289\n", - "Minivan 5289\n", - "Microbus 5289\n", - "Coupe 5289\n", - "Pickup 5289\n", - "Limousine 5289\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n", - "Распределение Category в контрольной выборке:\n", - "Category\n", - "Jeep 1697\n", - "Sedan 1697\n", - "Minivan 1697\n", - "Coupe 1697\n", - "Hatchback 1697\n", - "Goods wagon 1697\n", - "Universal 1697\n", - "Microbus 1697\n", - "Pickup 1697\n", - "Cabriolet 1697\n", - "Limousine 1697\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n", - "Распределение Category в тестовой выборке:\n", - "Category\n", - "Jeep 1750\n", - "Hatchback 1750\n", - "Sedan 1750\n", - "Coupe 1750\n", - "Minivan 1750\n", - "Goods wagon 1750\n", - "Microbus 1750\n", - "Universal 1750\n", - "Cabriolet 1750\n", - "Pickup 1750\n", - "Limousine 1750\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n", - "Андерсэмплинг:\n", - "Распределение Category в обучающей выборке:\n", - "Category\n", - "Cabriolet 7\n", - "Coupe 7\n", - "Goods wagon 7\n", - "Hatchback 7\n", - "Jeep 7\n", - "Limousine 7\n", - "Microbus 7\n", - "Minivan 7\n", - "Pickup 7\n", - "Sedan 7\n", - "Universal 7\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n", - "Распределение Category в контрольной выборке:\n", - "Category\n", - "Cabriolet 1\n", - "Coupe 1\n", - "Goods wagon 1\n", - "Hatchback 1\n", - "Jeep 1\n", - "Limousine 1\n", - "Microbus 1\n", - "Minivan 1\n", - "Pickup 1\n", - "Sedan 1\n", - "Universal 1\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n", - "Распределение Category в тестовой выборке:\n", - "Category\n", - "Cabriolet 3\n", - "Coupe 3\n", - "Goods wagon 3\n", - "Hatchback 3\n", - "Jeep 3\n", - "Limousine 3\n", - "Microbus 3\n", - "Minivan 3\n", - "Pickup 3\n", - "Sedan 3\n", - "Universal 3\n", - "Name: count, dtype: int64\n", - "Процент автомобилей категории 'Седан': 9.09%\n", - "Процент автомобилей категории 'Джип': 9.09%\n", - "\n" - ] - } - ], - "source": [ - "# Загрузка данных\n", - "train_df = pd.read_csv(\"..//static//csv//train_data.csv\")\n", - "val_df = pd.read_csv(\"..//static//csv//val_data.csv\")\n", - "test_df = pd.read_csv(\"..//static//csv//test_data.csv\")\n", - "\n", - "# Преобразование категориальных признаков в числовые\n", - "def encode(df):\n", - " label_encoders = {}\n", - " for column in df.select_dtypes(include=['object']).columns:\n", - " if column != 'Category': # Пропускаем целевую переменную\n", - " le = LabelEncoder()\n", - " df[column] = le.fit_transform(df[column])\n", - " label_encoders[column] = le\n", - " return label_encoders\n", - "\n", - "# Преобразование целевой переменной в числовые значения\n", - "def encode_target(df):\n", - " le = LabelEncoder()\n", - " df['Category'] = le.fit_transform(df['Category'])\n", - " return le\n", - "\n", - "# Применение кодирования\n", - "label_encoders = encode(train_df)\n", - "encode(val_df)\n", - "encode(test_df)\n", - "\n", - "# Кодирование целевой переменной\n", - "le_target = encode_target(train_df)\n", - "encode_target(val_df)\n", - "encode_target(test_df)\n", - "\n", - "# Проверка типов данных\n", - "def check_data_types(df):\n", - " for column in df.columns:\n", - " if df[column].dtype == 'object':\n", - " print(f\"Столбец '{column}' содержит строковые данные.\")\n", - "\n", - "check_data_types(train_df)\n", - "check_data_types(val_df)\n", - "check_data_types(test_df)\n", - "\n", - "# Функция для выполнения oversampling\n", - "def oversample(df):\n", - " if 'Category' not in df.columns:\n", - " print(\"Столбец 'Category' отсутствует.\")\n", - " return df\n", - " \n", - " X = df.drop('Category', axis=1)\n", - " y = df['Category']\n", - " \n", - " oversampler = RandomOverSampler(random_state=42)\n", - " X_resampled, y_resampled = oversampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "# Функция для выполнения undersampling\n", - "def undersample(df):\n", - " if 'Category' not in df.columns:\n", - " print(\"Столбец 'Category' отсутствует.\")\n", - " return df\n", - " \n", - " X = df.drop('Category', axis=1)\n", - " y = df['Category']\n", - " \n", - " undersampler = RandomUnderSampler(random_state=42)\n", - " X_resampled, y_resampled = undersampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "# Применение oversampling и undersampling к каждой выборке\n", - "train_df_oversampled = oversample(train_df)\n", - "val_df_oversampled = oversample(val_df)\n", - "test_df_oversampled = oversample(test_df)\n", - "\n", - "train_df_undersampled = undersample(train_df)\n", - "val_df_undersampled = undersample(val_df)\n", - "test_df_undersampled = undersample(test_df)\n", - "\n", - "# Обратное преобразование целевой переменной в строковые метки\n", - "def decode_target(df, le_target):\n", - " df['Category'] = le_target.inverse_transform(df['Category'])\n", - "\n", - "decode_target(train_df_oversampled, le_target)\n", - "decode_target(val_df_oversampled, le_target)\n", - "decode_target(test_df_oversampled, le_target)\n", - "\n", - "decode_target(train_df_undersampled, le_target)\n", - "decode_target(val_df_undersampled, le_target)\n", - "decode_target(test_df_undersampled, le_target)\n", - "\n", - "# Проверка результатов\n", - "def check_balance(df, name):\n", - " if 'Category' not in df.columns:\n", - " print(f\"Столбец 'Category' отсутствует в {name}.\")\n", - " return\n", - " \n", - " counts = df['Category'].value_counts()\n", - " print(f\"Распределение Category в {name}:\")\n", - " print(counts)\n", - " \n", - " if 'Sedan' in counts and 'Jeep' in counts:\n", - " print(f\"Процент автомобилей категории 'Седан': {counts['Sedan'] / len(df) * 100:.2f}%\")\n", - " print(f\"Процент автомобилей категории 'Джип': {counts['Jeep'] / len(df) * 100:.2f}%\")\n", - " else:\n", - " print(\"Отсутствуют одна или обе категории (Седан/Внедорожник).\")\n", - " print()\n", - "\n", - "# Проверка сбалансированности после oversampling\n", - "print(\"Оверсэмплинг:\")\n", - "check_balance(train_df_oversampled, \"обучающей выборке\")\n", - "check_balance(val_df_oversampled, \"контрольной выборке\")\n", - "check_balance(test_df_oversampled, \"тестовой выборке\")\n", - "\n", - "# Проверка сбалансированности после undersampling\n", - "print(\"Андерсэмплинг:\")\n", - "check_balance(train_df_undersampled, \"обучающей выборке\")\n", - "check_balance(val_df_undersampled, \"контрольной выборке\")\n", - "check_balance(test_df_undersampled, \"тестовой выборке\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Классические рок-треки (по данным Spotify)**\n", - "https://www.kaggle.com/datasets/thebumpkin/14400-classic-rock-tracks-with-spotify-data\n", - "\n", - " Этот набор данных, содержащий 1200 уникальных альбомов и 14 400 треков, представляет собой не просто коллекцию — это хроника эволюции классического рока. Каждый трек тщательно каталогизирован с 18 столбцами данных, включая ключевые метаданные, такие как название трека, исполнитель, альбом и год выпуска, наряду с функциями Spotify audio, которые позволяют получить представление о звуковом ландшафте этих неподвластных времени мелодий. Бизнес-цель может заключаться в улучшении стратегии маркетинга и продвижения музыкальных треков. Предположим как этот набор может быть полезен для бизнеса: Персонализированные рекомендации: Создание алгоритмов, которые будут рекомендовать пользователям музыку на основе их предпочтений. Цель технического проекта: Разработать и внедрить систему рекомендаций, которая будет предсказывать и рекомендовать пользователям музыкальные треки на основе их предпочтений и поведения. Входные данные: Данные о пользователях: Идентификатор пользователя, история прослушиваний, оценки треков, время прослушивания, частота прослушивания. Данные о треках: Атрибуты треков (название, исполнитель, альбом, год, длительность, танцевальность, энергичность, акустичность и т.д.). Данные о взаимодействии: Время и частота взаимодействия пользователя с определенными треками. Целевой признак: Рекомендации: Булева переменная, указывающая, должен ли конкретный трек быть рекомендован пользователю (1 - рекомендуется, 0 - не рекомендуется)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Выгрузка данных из csv файла \"Данные о клиентах\" в датафрейм" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['Track', 'Artist', 'Album', 'Year', 'Duration', 'Time_Signature',\n", - " 'Danceability', 'Energy', 'Key', 'Loudness', 'Mode', 'Speechiness',\n", - " 'Acousticness', 'Instrumentalness', 'Liveness', 'Valence', 'Tempo',\n", - " 'Popularity'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "df = pd.read_csv(\"..//static//csv//UltimateClassicRock.csv\")\n", - "print(df.columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Анализируем датафрейм при помощи \"ящика с усами\". Есть смещение в сторону меньших значений, это можно исправить при помощи oversampling и undersampling." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAx8AAAIjCAYAAABia6bHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzVUlEQVR4nO3dd5RV5dnw4XsGptBRUYoCgg3ELqhAFFQs2DXqp6KIvUAUjTEaC9iisb72khcBA/ZEUINRFEskRikLSxTUCKJB5FXpAgPM/v5wzQnDDFV8BsbrWosVdjvnmT07zvmxy+RlWZYFAADATyy/qgcAAAD8PIgPAAAgCfEBAAAkIT4AAIAkxAcAAJCE+AAAAJIQHwAAQBLiAwAASEJ8AAAASYgPgCo0ZcqUyMvLi0GDBlX1UFiBXr16xZZbbrnOXzcvLy/69++/zl8XYH0mPoBqYdCgQZGXl1fuz2abbRb77rtvvPDCC8nH89prr5UbS0FBQbRu3Tp69uwZn3322Tp5j3/84x/Rv3//mDVr1jp5vaqQYj9tKKrD9xNgVWpW9QAA1qVrr702WrVqFVmWxddffx2DBg2KQw45JJ577rk47LDDko/nggsuiA4dOsTixYtj/Pjx8dBDD8Vf//rXeP/996NZs2Y/6rX/8Y9/xDXXXBO9evWKhg0brpsBV5Gfcj+trxYsWBA1a/73x3B1+n4CrIj4AKqV7t27R/v27XPTZ5xxRjRu3Dgee+yxKomPvffeO4499tiIiDjttNNi2223jQsuuCAGDx4cl19+efLxrK9+LvuptLQ0SkpKori4OIqLi6t6OADJuewKqNYaNmwYtWrVKvcvzBER8+fPj1//+tfRvHnzKCoqiu222y5uvfXWyLIsIn74V+k2bdpEmzZtYsGCBbntvvvuu2jatGl06tQpli5dusbj2W+//SIiYvLkyStdb9SoUbH33ntHnTp1omHDhnHkkUfGRx99lFvev3//+M1vfhMREa1atcpdtjRlypRVjmH5y9PK/rz22msV1u3Vq1el6y5/r8LTTz8d7du3j3r16pVb79Zbb13leCpT2X667777ol27dlFUVBTNmjWL3r17V7hEqWvXrrHDDjvEuHHjolOnTlGrVq1o1apVPPDAA+XWK7tMb/n9VXYZWGX7Ylm33nprdOrUKTbZZJOoVatW7L777vH0009XWC8vLy/69OkTQ4cOzY39b3/7W25Z2X5c2fezS5cusfPOO1c6ju222y4OOuiglY4VYH3izAdQrcyePTu++eabyLIsZsyYEXfffXfMmzcvTj755Nw6WZbFEUccEa+++mqcccYZscsuu8SLL74Yv/nNb+I///lP3HHHHVGrVq0YPHhwdO7cOa644oq4/fbbIyKid+/eMXv27Bg0aFDUqFFjjcf373//OyIiNtlkkxWu8/LLL0f37t2jdevW0b9//1iwYEHcfffd0blz5xg/fnxsueWWccwxx8THH38cjz32WNxxxx3RqFGjiIjYdNNNV2scBxxwQPTs2TMiIsaMGRN33XXXCtdt1KhR3HHHHbnpU045pdzyt956K44//vjYeeed46abbooGDRrEN998ExdddNFqjaUyy++n/v37xzXXXBPdunWL8847LyZNmhT3339/jBkzJkaPHh0FBQW5bWfOnBmHHHJIHH/88XHiiSfGk08+Geedd14UFhbG6aefvtZjWtadd94ZRxxxRPTo0SNKSkri8ccfj+OOOy6ef/75OPTQQ8utO2rUqHjyySejT58+0ahRo0pvXl/Z9/OUU06Js846Kz744IPYYYcdctuMGTMmPv7447jyyivXydcEkEQGUA0MHDgwi4gKf4qKirJBgwaVW3fYsGFZRGTXX399ufnHHntslpeXl3366ae5eZdffnmWn5+fvfHGG9lTTz2VRUT2P//zP6scz6uvvppFRPbwww9n//d//5dNmzYt++tf/5ptueWWWV5eXjZmzJgsy7Js8uTJWURkAwcOzG27yy67ZJtttln27bff5ua9++67WX5+ftazZ8/cvFtuuSWLiGzy5MmrvZ9KSkqyiMj69OmTm1f2db366qsV1u/Ro0fWqlWrcvMiIuvXr19u+vLLL88iIvvqq69y88q+rltuuWWl41md/TRjxoyssLAwO/DAA7OlS5fmtr3nnnty25bp0qVLFhHZbbfdlpu3aNGi3D4tKSnJsuy/x8vy+65sPMvui1NPPTVr2bJlufW+//77ctMlJSXZDjvskO23334V9lV+fn72r3/9q8LXvvx+XNH3c9asWVlxcXH229/+ttz8Cy64IKtTp042b968Cq8NsL5y2RVQrdx7770xcuTIGDlyZAwZMiT23XffOPPMM+Mvf/lLbp0RI0ZEjRo14oILLii37a9//evIsqzc07H69+8f7dq1i1NPPTXOP//86NKlS4XtVub000+PTTfdNJo1axaHHnpozJ8/PwYPHlzuvpRlffXVVzFhwoTo1atXbLzxxrn5O+20UxxwwAExYsSI1X7vyixcuDAiYrXvNygpKYmioqKVrjN37tzIz8//UTdJr2w/vfzyy1FSUhJ9+/aN/Pz//tg666yzon79+vHXv/613GvVrFkzzjnnnNx0YWFhnHPOOTFjxowYN27cWo9xWbVq1cr9febMmTF79uzYe++9Y/z48RXW7dKlS2y//fZr/V4NGjSII488Mh577LHcZYFLly6NJ554Io466qioU6fOWr82QGouuwKqlT322KPcB/sTTzwxdt111+jTp08cdthhUVhYGJ9//nk0a9Ys6tWrV27btm3bRkTE559/nptXWFgYDz/8cHTo0CGKi4tj4MCBkZeXt9rjufrqq2PvvfeOGjVqRKNGjaJt27YV7j9ZVtl7b7fddhWWtW3bNl588cWYP3/+Wn/g/OabbyLihw+0q2PWrFlRt27dla7TsWPHuOeee+LCCy+MSy+9NBo0aBAzZ85co3GtbD+taJ8UFhZG69aty32/IiKaNWtWYf9su+22EfHD71XZa6+91mhslXn++efj+uuvjwkTJsSiRYty8ys7Nlq1avWj369nz57xxBNPxN///vfYZ5994uWXX46vv/66wiVwAOs78QFUa/n5+bHvvvvGnXfeGZ988km0a9dujV/jxRdfjIgfzhp88skna/Rhcscdd4xu3bqt8Xv+VMpusF7dX5o3ffr0aNmy5UrXOeGEE2L8+PFx9913x0MPPbRW40q9n1YUkKvzEIG///3vccQRR8Q+++wT9913XzRt2jQKCgpi4MCB8eijj1ZYf9mzJGvroIMOisaNG8eQIUNin332iSFDhkSTJk3Wq2MLYHW47Aqo9pYsWRIREfPmzYuIiJYtW8a0adNi7ty55dabOHFibnmZ9957L6699to47bTTYtddd40zzzwzZs+e/ZONtey9J02aVGHZxIkTo1GjRrl/1V+TMzBlxo4dGxGxwsu+lrV48eL49NNPc2eEViQ/Pz9uvfXW6Nq1a2yzzTa5S97WlRXtk5KSkpg8eXKFOJo2bVrMnz+/3LyPP/44Iv4bXRtttFFERIWnZS1/FqUyf/7zn6O4uDhefPHFOP3006N79+7rJAJW9v2sUaNGnHTSSfH000/HzJkzY9iwYXHiiSeu1UMPAKqS+ACqtcWLF8dLL70UhYWFuQ/RhxxySCxdujTuueeecuvecccdkZeXF927d89t26tXr2jWrFnceeedMWjQoPj6669/1FOcVqVp06axyy67xODBg8t9MP7ggw/ipZdeikMOOSQ3ryxC1uQ3Yj/99NOx3XbbRZs2bVa57vDhw2PBggW5x96uzN133x2jRo2KoUOHRrdu3aJz586rPaZV6datWxQWFsZdd92Vu+chImLAgAExe/bsCk+XWrJkSTz44IO56ZKSknjwwQdj0003jd133z0iIrbaaquIiHjjjTdy6y1dunS1ztzUqFEj8vLyyp0lmTJlSgwbNmytvr4yq/p+nnLKKTFz5sw455xzKjzBDWBD4bIroFp54YUXcmcwZsyYEY8++mh88skncdlll0X9+vUjIuLwww+PfffdN6644oqYMmVK7LzzzvHSSy/F8OHDo2/fvrkPpmXX9L/yyitRr1692GmnneLqq6+OK6+8Mo499thyIbAu3XLLLdG9e/fo2LFjnHHGGblH7TZo0KDc79co+yB9xRVXxAknnBAFBQVx+OGHV3o/yGeffRY333xzvPPOO3HMMceUOzMxZsyYiIgYOXJktGjRIpo0aRL9+vWL++67Lzp16hQHHnjgSsf7r3/9Ky699NLo379/dOjQYR3sgfI23XTTuPzyy+Oaa66Jgw8+OI444oiYNGlS3HfffdGhQ4cKH8KbNWsWf/jDH2LKlCmx7bbbxhNPPBETJkyIhx56KPdI3nbt2sVee+0Vl19+eXz33Xex8cYbx+OPP547S7Yyhx56aNx+++1x8MEHx0knnRQzZsyIe++9N7beeut477331vrrXNX3c9ddd40ddtghnnrqqWjbtm3stttua/1eAFWmip+2BbBOVPao3eLi4myXXXbJ7r///qy0tLTc+nPnzs0uuuiirFmzZllBQUG2zTbbZLfccktuvXHjxmU1a9bMfvWrX5XbbsmSJVmHDh2yZs2aZTNnzlzheMoe2frUU0+tdNyVPWo3y7Ls5Zdfzjp37pzVqlUrq1+/fnb44YdnH374YYXtr7vuumzzzTfP8vPzV/rY3RU9inj5PwMHDsy+/PLLrHnz5lnfvn2z2bNnV3itWOYRsQsXLsx22mmn7Be/+EW2ZMmSCl/X6j5q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4gMAAEhCfAAAAEmIDwAAIAnxAQAAJCE+AACAJMQHAACQhPgAAACSEB8AAEAS4gMAAEhCfAAAAEmIDwAAIAnxAQAAJCE+AACAJMQHAACQhPgAAACSqFnVAwAAWNaIESPi5ptvzk1feumlccghh+Sm33jjjbj66qtz09dee23ss88+uelPP/00zjrrrMiyLPLy8uKPf/xjbL311rnlb775Zlx55ZW56euvvz5+8YtfrHJZRMQ//vGP+N3vfpeb/v3vfx+dOnXKTU+cODHOPffc3PQDDzwQbdq0yU1//PHHcfbZZ+emH3roodh2220jIuLDDz+M888/P7fsvvvui+233361to2ImD59epx33nkxb968qFu3btx///3RpEmTiIiYMmVKnHHGGbF06dKoUaNGDBgwILbccsvctlOnTo0zzjgjFi9eHAUFBTFgwIBo0aJFbvm8efPixhtvjGnTpkWzZs3i8ssvj7p16+aWf/fdd3HxxRfHt99+G5tsskncfvvtsfHGG69yXBERJSUlMXz48NxrH3nkkVFYWLjayxcsWBAPPvhgfPnll7HFFlvEOeecE7Vq1frR20ZELF26NN5777347rvvYuONN46ddtopatSosdpj+ymtamzrq7wsy7K12XDOnDnRoEGDmD17dtSvX39dj2uNlP2fcfn/E7J+Kvt+zd/+iCit06iqh7PeyJ//TdT58Fn7ZR0q26f+2wDrp8p+fnft2nWF67/22ms/6fKVWd/f++CDD46FCxdWWFZcXByLFi2Kyj7u5eXlxauvvhr77bdflJaWVlien58fo0aNinPPPTcmTpxYYXmbNm3igQceiGOOOSa+++67Css33njj+P7771c4rr/97W/xwAMPxFNPPRVLly7NLatRo0Ycd9xxce65565y+RVXXBGjR4+u8PqdO3eO5s2br/W2N9xwQ7zxxhtx3333xfTp03PLmjRpEueff37ss88+qxzbT2lVY6sKq9sGLrsCANYLy3/AXvZf5itbvuOOO65weY0aNeKUU04p9y/By2+/yy67rHAsyy9bftvdd999hcvz8vLil7/8ZeTl5VW6PD8/P0444YTIz6/8Y9iRRx65wteubNuuXbvmPuA3adIk+vXrlzuzsHDhwlx4FBUVxTnnnBNFRUUREZFlWXTt2jUXHrVr145f/epXUbt27YiIKC0tja5du8bEiRMjLy8vDjzwwPjf//3fOPDAAyMvLy8mTpwY+++/fy48tt9++7jttttyZ2u+++67lY5r//33j8cffzzq168fl1xySfz5z3+OSy65JOrXrx+PP/54nHvuuStd3qNHjxg9enQUFBTESSedFEOGDImTTjopCgoKYvTo0T9q23PPPTf69esXrVu3jnvvvTdGjBgR9957b7Ru3Tr69esXV1xxxUpf/4EHHqj0e7suvPHGGysd2xtvvPGTvfe64MwHyTnzUTlnPtY9Zz5g/bbsz+9PP/00d6nV1VdfHfvtt19uvVGjRsW1116bm7755ptjjz32yE2/8847cemll+amhwwZEltssUVu+ssvv4yTTz45N33rrbdG+/btc9MDBgyIP/3pTxERceqpp8Zpp52WWzZ27Ni45JJLctO333577Lbbbrnp8ePHx8UXX5ybHjRoULlomjJlSvTq1Ss3/cgjj5S7nOnll1+O66+/PiIirrrqqth///1zyz777LM4/fTTV7jt1KlTo2fPnrnpYcOGRcOGDXPTH3zwQfTp0yciIu6+++5ysTZ9+vQ44YQTctNPPvlkbLbZZrnpGTNmxPHHH5+b/tvf/hbFxcW56YULF8bBBx+cm37++efLXYY1efLk3H5cfp/MmjUrjjrqqIiIqFu3bgwbNixq1vzvnQBLliyJ4447LmbOnBkNGzaMp59+usLyY489NmbNmhU1a9aMESNGlLvUad68eXHYYYdFRMRzzz0X9erVW+1tS0pK4pBDDoklS5bEnnvuGTfeeGO50CstLY3f/e538c9//nOFYzvuuONizpw58cILL6zzS7CWLl0aPXr0iNatW8f1119fYWxXXnllTJ48OYYMGZL8EqzVbYPVvudj0aJFsWjRonJvsL75/PPPq3oIrAbfJ1JzzMH6adn/by57j8ey4VE2vWx8LBselU0vGx6VTS8bHhGRC4+IiMGDB5eLj+XXXTY8Kpte/mzN8tPLxkNE5MIjIuK6664rFx+tW7de6bbLTy8bHhERF154Ye7vV199dTzzzDO56WXvuYiIcuFRNp2fnx+lpaWRl5dXLjwifrhsqnbt2vH9999HnTp1yoVHRJQLsv79+8egQYPKjbNevXoxd+7cKC0tLffhPSKiZs2asfPOO8drr70Wu+yyS6XLW7ZsGbNmzYodd9yxwgf8F154Iff3AQMGRN++fVd728LCwthnn31i1KhRUVRUVOHsVH5+fmy++eYREXHggQdWOrbTTz89brvtthg+fHgcd9xxsS699957MX369LjqqqsqHVuPHj2id+/e8d5778Wuu+66Tt97XVnt+Ljxxhvjmmuu+SnH8qPdcMMNVT0EYD3kvw2w4Vj+wzprb9l7EebNm7fG29evXz9mzZpV6f0iy6pTp06Fecu+37ffflth+bbbbhvjxo2LkpKSSl+zLHaWj54yZWNq1KjilQLTpk3L/f3LL79co20jfriXZdSoUTF37txKl5f9Y3yzZs0qXd6xY8cK41hXyi5xa9WqVaXLy+ZXdg/O+mK14+Pyyy8vV7Fz5syJ5s2b/ySDWltXXHFFtGzZsqqHwSp8/vnnPgySlP82wPqpsp8HU6ZMqZrBVEM1atTIBcjyZyZWR9lVLsveu1KZ+fPnV5hXt27dmDlzZkREbLLJJhWWf/zxxxERK7wsqexekcpuVl92TN98802FZctGwfJnvVa1bUTkbq5f9nKtZZXdM7OiuHjrrbcqjGNdKXuC2OTJk6Ndu3YVlk+ePLnceuuj1Y6PoqKi3M5eX7Vs2dJ13UAF/tsA679LL700d+nVqFGjKtzzsax33nmnwj0fyyp7bOqy08saO3ZsucupTjnllHL3fCy/7rLGjx9f4Z6PZU2ZMqXCPR/Lmjp1arnLpa688spy93ws67PPPlvptlOnTi23fNasWeUuvbrzzjtz93wse9laRJR7SlLED/d4LH/PR9mN6FmWxcKFCyvc8/H9999HxA/xUfYY3TK333577vK1/v37Vxhn2VmF/Pz8WLJkSYX7Jt59992IiJgwYUKly8su2Xv//fejpKSkXMR079497r333oiIOOOMM8q996q2LSkpyd2wvWjRoigtLa1wX8V//vOfiIh46aWX4uyzz64wtocffjhq1KhR4cEB68JOO+0UTZo0iaFDh1Z6z8fQoUOjadOmsdNOO63z915X3HBOcm44r5wbztc9N5zD+m35n9/LP1Fq8803z33Qq0ybNm0qfQRsxH8febr8o1CX1a5du/jXv/61xssifvgQ+N5771W6LC8vLw4//PB47rnnKr1kKT8/P44++uh45plnKn3E7SGHHBIjRoyo9LVXtW2TJk3ijDPOiAEDBlQIjKKioujRo0cMHTq03H28ZWrXrh09e/aMRx55JBcW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IxXHGik4zqq3lZ3xKOOGcwAAIAnxAQAAJFEt4qOoqCj69esXRUVFVT0UqjnHGqk41kjFsUYKjjPKrPUN5wAAAGuiWpz5AAAA1n/iAwAASEJ8AAAASYgPAAAgiWoRH/fee29sueWWUVxcHHvuuWe88847VT0kNmA33nhjdOjQIerVqxebbbZZHHXUUTFp0qRy6yxcuDB69+4dm2yySdStWzd++ctfxtdff11FI6a6uOmmmyIvLy/69u2bm+dYY135z3/+EyeffHJssskmUatWrdhxxx1j7NixueVZlsXVV18dTZs2jVq1akW3bt3ik08+qcIRsyFaunRpXHXVVdGqVauoVatWbLXVVnHdddfFss83cqz9vG3w8fHEE0/ExRdfHP369Yvx48fHzjvvHAcddFDMmDGjqofGBur111+P3r17xz//+c8YOXJkLF68OA488MCYP39+bp2LLroonnvuuXjqqafi9ddfj2nTpsUxxxxThaNmQzdmzJh48MEHY6eddio337HGujBz5szo3LlzFBQUxAsvvBAffvhh3HbbbbHRRhvl1rn55pvjrrvuigceeCDefvvtqFOnThx00EGxcOHCKhw5G5o//OEPcf/998c999wTH330UfzhD3+Im2++Oe6+++7cOo61n7lsA7fHHntkvXv3zk0vXbo0a9asWXbjjTdW4aioTmbMmJFFRPb6669nWZZls2bNygoKCrKnnnoqt85HH32URUT21ltvVdUw2YDNnTs322abbbKRI0dmXbp0yS688MIsyxxrrDu//e1vs1/84hcrXF5aWpo1adIku+WWW3LzZs2alRUVFWWPPfZYiiFSTRx66KHZ6aefXm7eMccck/Xo0SPLMscaWbZBn/koKSmJcePGRbdu3XLz8vPzo1u3bvHWW29V4cioTmbPnh0RERtvvHFERIwbNy4WL15c7rhr06ZNtGjRwnHHWundu3cceuih5Y6pCMca686zzz4b7du3j+OOOy4222yz2HXXXeOPf/xjbvnkyZNj+vTp5Y61Bg0axJ577ulYY4106tQpXnnllfj4448jIuLdd9+NN998M7p37x4RjjUialb1AH6Mb775JpYuXRqNGzcuN79x48YxceLEKhoV1UlpaWn07ds3OnfuHDvssENEREyfPj0KCwujYcOG5dZt3LhxTJ8+vQpGyYbs8ccfj/Hjx8eYMWMqLHOssa589tlncf/998fFF18cv/vd72LMmDFxwQUXRGFhYZx66qm546myn6eONdbEZZddFnPmzIk2bdpEjRo1YunSpXHDDTdEjx49IiIca2zY8QE/td69e8cHH3wQb775ZlUPhWroiy++iAsvvDBGjhwZxcXFVT0cqrHS0tJo3759/P73v4+IiF133TU++OCDeOCBB+LUU0+t4tFRnTz55JMxdOjQePTRR6Ndu3YxYcKE6Nu3bzRr1syxRkRs4DecN2rUKGrUqFHhyS9ff/11NGnSpIpGRXXRp0+feP755+PVV1+NLbbYIje/SZMmUVJSErNmzSq3vuOONTVu3LiYMWNG7LbbblGzZs2oWbNmvP7663HXXXdFzZo1o3Hjxo411ommTZvG9ttvX25e27ZtY+rUqRERuePJz1N+rN/85jdx2WWXxQknnBA77rhjnHLKKXHRRRfFjTfeGBGONTbw+CgsLIzdd989Xnnlldy80tLSeOWVV6Jjx45VODI2ZFmWRZ8+feKZZ56JUaNGRatWrcot33333aOgoKDccTdp0qSYOnWq4441sv/++8f7778fEyZMyP1p37599OjRI/d3xxrrQufOnSs8Mvzjjz+Oli1bRkREq1atokmTJuWOtTlz5sTbb7/tWGONfP/995GfX/7jZY0aNaK0tDQiHGvEhv+0q8cffzwrKirKBg0alH344YfZ2WefnTVs2DCbPn16VQ+NDdR5552XNWjQIHvttdeyr776Kvfn+++/z61z7rnnZi1atMhGjRqVjR07NuvYsWPWsWPHKhw11cWyT7vKMsca68Y777yT1axZM7vhhhuyTz75JBs6dGhWu3btbMiQIbl1brrppqxhw4bZ8OHDs/feey878sgjs1atWmULFiyowpGzoTn11FOzzTffPHv++eezyZMnZ3/5y1+yRo0aZZdeemluHcfaz9sGHx9ZlmV333131qJFi6ywsDDbY489sn/+859VPSQ2YBFR6Z+BAwfm1lmwYEF2/vnnZxtttFFWu3bt7Oijj86++uqrqhs01cby8eFYY1157rnnsh122CErKirK2rRpkz300EPllpeWlmZXXXVV1rhx46yoqCjbf//9s0mTJlXRaNlQzZkzJ7vwwguzFi1aZMXFxVnr1q2zK664Ilu0aFFuHcfaz1teli3zKycBAAB+Ihv0PR8AAMCGQ3wAAABJiA8AACAJ8QEAACQhPgAAgCTEBwAAkIT4AAAAkhAfAABAEuIDgB+la9eu0bdv3x/9Ov37949ddtnlR78OAOsv8QGwAevVq1fk5eVFXl5eFBYWxtZbbx3XXnttLFmypKqHtsYuueSSeOWVV3LTvXr1iqOOOqrqBgTAOlezqgcAwI9z8MEHx8CBA2PRokUxYsSI6N27dxQUFMTll19e1UNbLVmWxdKlS6Nu3bpRt27dqh4OAD8hZz4ANnBFRUXRpEmTaNmyZZx33nnRrVu3ePbZZ2PmzJnRs2fP2GijjaJ27drRvXv3+OSTT3LbDRo0KBo2bBjDhg2LbbbZJoqLi+Oggw6KL774IrdOZWcf+vbtG127dl3heP70pz9F+/bto169etGkSZM46aSTYsaMGbnlr732WuTl5cULL7wQu+++exQVFcWbb75Z7rKr/v37x+DBg2P48OG5MzuvvfZa7LffftGnT59y7/d///d/UVhYWO6sCQDrJ/EBUM3UqlUrSkpKolevXjF27Nh49tln46233oosy+KQQw6JxYsX59b9/vvv44YbbohHHnkkRo8eHbNmzYoTTjjhR73/4sWL47rrrot33303hg0bFlOmTIlevXpVWO+yyy6Lm266KT766KPYaaedyi275JJL4vjjj4+DDz44vvrqq/jqq6+iU6dOceaZZ8ajjz4aixYtyq07ZMiQ2HzzzWO//fb7UeMG4KfnsiuAaiLLsnjllVfixRdfjO7du8ewYcNi9OjR0alTp4iIGDp0aDRv3jyGDRsWxx13XET8EAr33HNP7LnnnhERMXjw4Gjbtm288847sccee6zVOE4//fTc31u3bh133XVXdOjQIebNm1fusqprr702DjjggEpfo27dulGrVq1YtGhRNGnSJDf/mGOOiT59+sTw4cPj+OOPj4gfzuCU3fsCwPrNmQ+ADdzzzz8fdevWjeLi4ujevXv8v//3/6JXr15Rs2bNXFRERGyyySax3XbbxUcffZSbV7NmzejQoUNuuk2bNtGwYcNy66ypcePGxeGHHx4tWrSIevXqRZcuXSIiYurUqeXWa9++/Rq/dnFxcZxyyinx8MMPR0TE+PHj44MPPqj0zAoA6x/xAbCB23fffWPChAnxySefxIIFC2Lw4MHr7CxAfn5+ZFlWbt6yl20tb/78+XHQQQdF/fr1Y+jQoTFmzJh45plnIiKipKSk3Lp16tRZqzGdeeaZMXLkyPjyyy9j4MCBsd9++0XLli3X6rUASEt8AGzg6tSpE1tvvXW0aNEiatb84Wratm3bxpIlS+Ltt9/Orfftt9/GpEmTYvvtt8/NW7JkSYwdOzY3PWnSpJg1a1a0bds2IiI23XTT+Oqrr8q934QJE1Y4lokTJ8a3334bN910U+y9997Rpk2bcjebr4nCwsJYunRphfk77rhjtG/fPv74xz/Go48+Wu4yLwDWb+IDoBraZptt4sgjj4yzzjor3nzzzXj33Xfj5JNPjs033zyOPPLI3HoFBQXxq1/9Kt5+++0YN25c9OrVK/baa6/c/R777bdfjB07Nh555JH45JNPol+/fvHBBx+s8H1btGgRhYWFcffdd8dnn30Wzz77bFx33XVr9TVsueWW8d5778WkSZPim2++KXfG5cwzz4ybbropsiyLo48+eq1eH4D0xAdANTVw4MDYfffd47DDDouOHTtGlmUxYsSIKCgoyK1Tu3bt+O1vfxsnnXRSdO7cOerWrRtPPPFEbvlBBx0UV111VVx66aXRoUOHmDt3bvTs2XOF77npppvGoEGD4qmnnortt98+brrpprj11lvXavxnnXVWbLfddtG+ffvYdNNNY/To0bllJ554YtSsWTNOPPHEKC4uXqvXByC9vGz5i3kB+FkYNGhQ9O3bN2bNmlXVQ1ljU6ZMia222irGjBkTu+22W1UPB4DV5FG7AGwwFi9eHN9++21ceeWVsddeewkPgA2My64A2GCMHj06mjZtGmPGjIkHHnigqocDwBpy2RUAAJCEMx8AAEAS4gMAAEhCfAAAAEmIDwAAIAnxAQAAJCE+AACAJMQHAACQhPgAAACS+P87fxg1bSChrgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Box plot для столбца 'Popularity'\n", - "plt.figure(figsize=(10, 6))\n", - "sns.boxplot(x=df['Popularity'])\n", - "plt.title('Box Plot для Popularity')\n", - "plt.xlabel('Popularity')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Решим проблему пустых значений при помощи удаления таких строк." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "df_cleaned = df.dropna()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Разбиение набора данных на обучающую, контрольную и тестовую выборки" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 8650\n", - "Размер контрольной выборки: 2884\n", - "Размер тестовой выборки: 2884\n" - ] - } - ], - "source": [ - "# Разделение на обучающую и тестовую выборки\n", - "train_df, test_df = train_test_split(df_cleaned, test_size=0.2, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную\n", - "train_df, val_df = train_test_split(train_df, test_size=0.25, random_state=42)\n", - "\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Оценка сбалансированности выборок, по результатам видно что баланса тут мало" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение Popularity в обучающей выборке:\n", - "Popularity\n", - "23 258\n", - "15 250\n", - "26 246\n", - "21 245\n", - "14 245\n", - " ... \n", - "84 1\n", - "87 1\n", - "91 1\n", - "79 1\n", - "86 1\n", - "Name: count, Length: 88, dtype: int64\n", - "\n", - "Распределение Popularity в контрольной выборке:\n", - "Popularity\n", - "17 90\n", - "26 86\n", - "21 83\n", - "24 83\n", - "28 80\n", - " ..\n", - "85 1\n", - "83 1\n", - "84 1\n", - "80 1\n", - "77 1\n", - "Name: count, Length: 85, dtype: int64\n", - "\n", - "Распределение Popularity в тестовой выборке:\n", - "Popularity\n", - "22 86\n", - "21 85\n", - "12 84\n", - "20 82\n", - "26 81\n", - " ..\n", - "76 2\n", - "71 2\n", - "79 1\n", - "82 1\n", - "80 1\n", - "Name: count, Length: 80, dtype: int64\n", - "\n" - ] - } - ], - "source": [ - "def check_balance(df, name):\n", - " counts = df['Popularity'].value_counts()\n", - " print(f\"Распределение Popularity в {name}:\")\n", - " print(counts)\n", - " print()\n", - "\n", - "check_balance(train_df, \"обучающей выборке\")\n", - "check_balance(val_df, \"контрольной выборке\")\n", - "check_balance(test_df, \"тестовой выборке\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Выполним овер- и андер- слемпинг." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение Popularity в обучающей выборке после oversampling:\n", - "Popularity\n", - "44 258\n", - "20 258\n", - "30 258\n", - "27 258\n", - "8 258\n", - " ... \n", - "78 258\n", - "79 258\n", - "74 258\n", - "81 258\n", - "86 258\n", - "Name: count, Length: 88, dtype: int64\n", - "\n", - "Распределение Popularity в контрольной выборке после oversampling:\n", - "Popularity\n", - "21 90\n", - "11 90\n", - "28 90\n", - "23 90\n", - "37 90\n", - " ..\n", - "61 90\n", - "84 90\n", - "80 90\n", - "77 90\n", - "0 90\n", - "Name: count, Length: 85, dtype: int64\n", - "\n", - "Распределение Popularity в тестовой выборке после oversampling:\n", - "Popularity\n", - "14 86\n", - "47 86\n", - "27 86\n", - "13 86\n", - "66 86\n", - " ..\n", - "63 86\n", - "79 86\n", - "71 86\n", - "82 86\n", - "80 86\n", - "Name: count, Length: 80, dtype: int64\n", - "\n" - ] - } - ], - "source": [ - "def oversample(df):\n", - " X = df.drop('Popularity', axis=1)\n", - " y = df['Popularity']\n", - " \n", - " oversampler = RandomOverSampler(random_state=42)\n", - " X_resampled, y_resampled = oversampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "train_df_oversampled = oversample(train_df)\n", - "val_df_oversampled = oversample(val_df)\n", - "test_df_oversampled = oversample(test_df)\n", - "\n", - "check_balance(train_df_oversampled, \"обучающей выборке после oversampling\")\n", - "check_balance(val_df_oversampled, \"контрольной выборке после oversampling\")\n", - "check_balance(test_df_oversampled, \"тестовой выборке после oversampling\")" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение Popularity в обучающей выборке после undersampling:\n", - "Popularity\n", - "0 1\n", - "1 1\n", - "2 1\n", - "3 1\n", - "4 1\n", - " ..\n", - "84 1\n", - "85 1\n", - "86 1\n", - "87 1\n", - "91 1\n", - "Name: count, Length: 88, dtype: int64\n", - "\n", - "Распределение Popularity в контрольной выборке после undersampling:\n", - "Popularity\n", - "0 1\n", - "1 1\n", - "2 1\n", - "3 1\n", - "4 1\n", - " ..\n", - "82 1\n", - "83 1\n", - "84 1\n", - "85 1\n", - "87 1\n", - "Name: count, Length: 85, dtype: int64\n", - "\n", - "Распределение Popularity в тестовой выборке после undersampling:\n", - "Popularity\n", - "0 1\n", - "1 1\n", - "2 1\n", - "3 1\n", - "4 1\n", - " ..\n", - "76 1\n", - "77 1\n", - "79 1\n", - "80 1\n", - "82 1\n", - "Name: count, Length: 80, dtype: int64\n", - "\n" - ] - } - ], - "source": [ - "def undersample(df):\n", - " X = df.drop('Popularity', axis=1)\n", - " y = df['Popularity']\n", - " \n", - " undersampler = RandomUnderSampler(random_state=42)\n", - " X_resampled, y_resampled = undersampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "train_df_undersampled = undersample(train_df)\n", - "val_df_undersampled = undersample(val_df)\n", - "test_df_undersampled = undersample(test_df)\n", - "\n", - "check_balance(train_df_undersampled, \"обучающей выборке после undersampling\")\n", - "check_balance(val_df_undersampled, \"контрольной выборке после undersampling\")\n", - "check_balance(test_df_undersampled, \"тестовой выборке после undersampling\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### **Онлайн обучение**\n", - "\n", - "https://www.kaggle.com/datasets/shariful07/student-flexibility-in-online-learning\n", - "\n", - "\n", - "Этот набор данных предоставляет информацию о студентах и их характеристиках, связанных с обучением и использованием технологий. В данных представлены следующие атрибуты: уровень образования студента (например, бакалавриат, магистратура), тип учебного заведения (государственное или частное), пол, возраст, тип используемого устройства, является ли студент IT-специалистом, местоположение, финансовое состояние, тип интернета, тип сети и уровень гибкости в обучении. Эти данные могут быть использованы для анализа влияния различных факторов на успеваемость студентов, оптимизации образовательных программ и разработки стратегий поддержки студентов в условиях цифровизации образования." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Выгрузка данных из csv файла \"Онлайн обучение\" в датафрейм" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['Education Level', 'Institution Type', 'Gender', 'Age', 'Device',\n", - " 'IT Student', 'Location', 'Financial Condition', 'Internet Type',\n", - " 'Network Type', 'Flexibility Level'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "df = pd.read_csv(\"..//static//csv//students_adaptability_level_online_education.csv\")\n", - "print(df.columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "При помощи ящика с усами и колонки возраста проверим набор на баланс." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAx8AAAIjCAYAAABia6bHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAodElEQVR4nO3deXSV1b344W/CEKiEcBUEooA4gbXiVMThoqKooHWoWMXrRJ1aBXGqVa9V0erSJd5qxaH1LjT2Sq1iUetVqqBoa2sdQByuFYHGEQQBCYggIPv3R3+kRsjEsAPkedbKanPO++7sczbvOfl4zntSkFJKAQAAsJ4VNvQEAACAxkF8AAAAWYgPAAAgC/EBAABkIT4AAIAsxAcAAJCF+AAAALIQHwAAQBbiAwAAyEJ8AGzi3nvvvSgoKIiysrKGngoAjZz4AKijsrKyKCgoqPK15ZZbRp8+fWLs2LHZ5/Pcc89VmUuzZs1i2223jVNPPTX+8Y9/rJOf8de//jWGDRsW8+fPXyfjNbQnn3wyCgoKorS0NFasWNHQ0wFodJo29AQANjbXXnttdO3aNVJKMWvWrCgrK4vDDz88Hn/88fje976XfT5Dhw6Nnj17xrJly2LSpElx9913xxNPPBFvvvlmlJaWrtXYf/3rX+Oaa66JQYMGRZs2bdbNhBvQqFGjYpttton33nsvnn322ejbt29DTwmgUfHKB0A99e/fP04++eQ45ZRT4ic/+Un8+c9/jmbNmsUDDzzQIPPp3bt3nHzyyfHDH/4wRowYETfffHPMmzcv7rvvvgaZz4Zq0aJF8dhjj8VFF10Uu+++e4waNaqhpwTQ6IgPgLXUpk2baNmyZTRtWvXF5EWLFsXFF18cnTp1iqKioujWrVvcfPPNkVKKiIjFixdH9+7do3v37rF48eLK/ebNmxcdO3aMfffdN7766qt6z+eggw6KiIjy8vIat3v22Wejd+/esdlmm0WbNm3i6KOPjr///e+V1w8bNiwuueSSiIjo2rVr5du73nvvvVrn8M23p638eu6551bZdtCgQavddtiwYVW2e/jhh+O73/1uFBcXV9nu5ptvrnU+ERGPPPJILF68OH7wgx/EwIEDY8yYMbFkyZJVtlu8eHEMHTo02rZtG8XFxXHUUUfFxx9/vNo5ffzxx3H66adH+/bto6ioKHbeeee455576jQfgMbI264A6qmioiLmzJkTKaWYPXt2jBgxIj7//PM4+eSTK7dJKcVRRx0VEyZMiDPOOCN22223eOqpp+KSSy6Jjz/+OG655ZZo2bJl3HfffbHffvvFFVdcEb/4xS8iImLw4MFRUVERZWVl0aRJk3rPb/r06RERscUWW1S7zfjx46N///6x7bbbxrBhw2Lx4sUxYsSI2G+//WLSpEmxzTbbxLHHHhvvvvtuPPDAA3HLLbdE27ZtIyKiXbt2dZrHIYccEqeeempERLzyyitx2223Vbtt27Zt45Zbbqn8/pRTTqly/YsvvhjHH3987LrrrnHjjTdGSUlJzJkzJy688MI6zSXin2+56tOnT3To0CEGDhwYl112WTz++OPxgx/8oMp2gwYNioceeihOOeWU2HvvveP555+PI444YpXxZs2aFXvvvXcUFBTEkCFDol27djF27Ng444wzYsGCBXHBBRfUeW4AjUYCoE7uvffeFBGrfBUVFaWysrIq2z766KMpItJ1111X5fLjjjsuFRQUpGnTplVedvnll6fCwsL0pz/9KY0ePTpFRLr11ltrnc+ECRNSRKR77rknffrpp2nGjBnpiSeeSNtss00qKChIr7zySkoppfLy8hQR6d57763cd7fddktbbrllmjt3buVlr7/+eiosLEynnnpq5WXDhw9PEZHKy8vrfD8tXbo0RUQaMmRI5WUrb9eECRNW2f6kk05KXbt2rXJZRKSrr7668vvLL788RUSaOXNm5WUrb9fw4cNrndOsWbNS06ZN03//939XXrbvvvumo48+usp2EydOTBGRLrjggiqXDxo0aJU5nXHGGaljx45pzpw5VbYdOHBgKikpSV988UWt8wJobLztCqCe7rjjjhg3blyMGzcu7r///ujTp0+ceeaZMWbMmMptnnzyyWjSpEkMHTq0yr4XX3xxpJSqfDrWsGHDYuedd47TTjstzj333DjggANW2a8mp59+erRr1y5KS0vjiCOOiEWLFsV9990X3/3ud1e7/cyZM2Py5MkxaNCg2HzzzSsv79GjRxxyyCHx5JNP1vlnr87KtzK1aNGiTtsvXbo0ioqKatxm4cKFUVhYuMYnvf/ud7+LwsLCGDBgQOVlJ554YowdOzY+++yzysv++Mc/RkTEueeeW2X/8847r8r3KaX4/e9/H0ceeWSklGLOnDmVX4cddlhUVFTEpEmT1miuAJsyb7sCqKe99tqryi/2J554Yuy+++4xZMiQ+N73vhfNmzeP999/P0pLS6O4uLjKvjvttFNERLz//vuVlzVv3jzuueee6NmzZ7Ro0SLuvffeKCgoqPN8rrrqqujdu3c0adIk2rZtGzvttNMq55983cqf3a1bt1Wu22mnneKpp56KRYsWxWabbVbnOXzdnDlzIiKipKSkTtvPnz8/WrVqVeM2++yzT9x+++1x/vnnx09/+tMoKSmpEg21uf/++2OvvfaKuXPnxty5cyMiYvfdd4+lS5fG6NGj4+yzz46If943hYWF0bVr1yr7b7/99lW+//TTT2P+/Plx9913x913373anzl79uw6zw+gsRAfAGupsLAw+vTpE7/85S9j6tSpsfPOO9d7jKeeeioi/vmqwdSpU1f55bcmu+yyywb1kbErT0jfZptt6rT9J598El26dKlxm4EDB8akSZNixIgR1f6yX52pU6fGK6+8EhERO+ywwyrXjxo1qjI+6mrl3wg5+eST47TTTlvtNj169KjXmACNgfgAWAeWL18eERGff/55RER06dIlxo8fHwsXLqzy6sc777xTef1Kb7zxRlx77bXxwx/+MCZPnhxnnnlmvPnmm3V+5aC+Vv7sKVOmrHLdO++8E23btq181aM+r8Cs9Oqrr0ZEVPu2r69btmxZTJs2Lfr161fjdoWFhXHzzTfHm2++GeXl5XHnnXfGrFmzqpzkX51Ro0ZFs2bN4n/+539WOYH/hRdeiNtuuy0++OCD6Ny5c3Tp0iVWrFgR5eXlVUJl2rRpVfZr165dFBcXx1dffbVBhR/Ahs45HwBradmyZfH0009H8+bNK99Wdfjhh8dXX30Vt99+e5Vtb7nlligoKIj+/ftX7jto0KAoLS2NX/7yl1FWVhazZs2q16c41VfHjh1jt912i/vuu6/KXy5/66234umnn47DDz+88rKVEVKfv3D+8MMPR7du3aJ79+61bvvYY4/F4sWLKz8euCYjRoyIZ599NkaNGhV9+/aN/fbbr07zGTVqVPTu3TtOOOGEOO6446p8rfwo4ZV/o+Wwww6LiIg777xzlZ/9dU2aNIkBAwbE73//+3jrrbdW+ZmffvppneYG0Nh45QOgnsaOHVv5Csbs2bPjt7/9bUydOjUuu+yyaN26dUREHHnkkdGnT5+44oor4r333otdd901nn766XjsscfiggsuiO222y4iIq677rqYPHlyPPPMM1FcXBw9evSIq666Kn72s5/FcccdVyUE1qXhw4dH//79Y5999okzzjij8qN2S0pKqvwtiz333DMiIq644ooYOHBgNGvWLI488sjVng/yj3/8I2666aZ4+eWX49hjj43777+/8rqVb3saN25cdO7cOTp06BBXX3113HnnnbHvvvvGoYceWuN8/+///i9++tOfxrBhw6Jnz551vp0vvfRSTJs2LYYMGbLa67faaqvYY489YtSoUXHppZfGnnvuGQMGDIhbb7015s6dW/lRu++++25EVH0l6MYbb4wJEyZEr1694qyzzopvf/vbMW/evJg0aVKMHz8+5s2bV+d5AjQaDfxpWwAbjdV91G6LFi3Sbrvtlu666660YsWKKtsvXLgwXXjhham0tDQ1a9Ys7bDDDmn48OGV202cODE1bdo0nXfeeVX2W758eerZs2cqLS1Nn332WbXzWflRu6NHj65x3qv7qN2UUho/fnzab7/9UsuWLVPr1q3TkUcemd5+++1V9v/5z3+ettpqq1RYWFjjx+5W91HE3/y6995700cffZQ6deqULrjgglRRUbHKWPG1j7VdsmRJ6tGjR/r3f//3tHz58lVuV00ftXveeeeliEjTp0+vdpthw4aliEivv/56SimlRYsWpcGDB6fNN988tWrVKh1zzDFpypQpKSLSjTfeWGXfWbNmpcGDB6dOnTqlZs2apQ4dOqSDDz443X333dX+PIDGrCCl//+ndgFgLZSVlcWwYcNq/AvoBx54YAwaNCgGDRqUbV7rwuTJk2P33XeP+++/P0466aSGng7ARss5HwDwNYsXL17lsltvvTUKCwtj//33b4AZAWw6nPMBwDqx3Xbbxfe///0atznkkEMqz3fZUN10000xceLE6NOnTzRt2jTGjh0bY8eOjbPPPjs6derU0NMD2Kh52xUAfM24cePimmuuibfffjs+//zz6Ny5c5xyyilxxRVX1PjHGwGonfgAAACycM4HAACQhfgAAACyWOM3r65YsSJmzJgRxcXFVf7oEgAA0LiklGLhwoVRWloahYXVv76xxvExY8YMn/oBAABU+vDDD2Prrbeu9vo1jo/i4uLKH9C6des1HQYAANjILViwIDp16lTZCNVZ4/hY+Var1q1biw8AAKDW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3XRT3HbbbfGrX/0qXnrppdhss83isMMOiyVLllQ75oMPPhgXXXRRXH311TFp0qTYdddd47DDDovZs2evr5ux0atpHb744ouYNGlSXHnllTFp0qQYM2ZMTJkyJY466qhax915551j5syZlV8vvPDC+pj+JqO24yEiol+/flXu0wceeKDGMR0P9VfbOnz9/p85c2bcc889UVBQEAMGDKhxXMdD3T3//PMxePDg+Nvf/hbjxo2LZcuWxaGHHhqLFi2q3ObCCy+Mxx9/PEaPHh3PP/98zJgxI4499tgax12T55TGrLZ1mDFjRsyYMSNuvvnmeOutt6KsrCz++Mc/xhlnnFHr2PV9LGvM6nI8REScddZZVe7Tm266qcZxHQ/1U9s6dOrUaZXnh2uuuSZatWoV/fv3r3HstT4eEmskItIjjzxS+f2KFStShw4d0vDhwysvmz9/fioqKkoPPPBAtePstddeafDgwZXff/XVV6m0tDTdcMMN62Xem5pvrsPqvPzyyyki0vvvv1/tNldffXXadddd1+3kGpHVrcNpp52Wjj766HqN43hYO3U5Ho4++uh00EEH1biN42HtzJ49O0VEev7551NK/3wuaNasWRo9enTlNn//+99TRKQXX3xxtWOs6XMK//LNdVidhx56KDVv3jwtW7as2m3W5LGMf1ndOhxwwAHp/PPPr/MYjoe1V5fjYbfddkunn356jeOsi+PBKx/rSHl5eXzyySfRt2/fystKSkqiV69e8eKLL652n6VLl8bEiROr7FNYWBh9+/atdh/qr6KiIgoKCqJNmzY1bjd16tQoLS2NbbfdNk466aT44IMP8kxwE/bcc8/FlltuGd26dYtzzjkn5s6dW+22jof1b9asWfHEE0/U6b/0Oh7W3Mq38Wy++eYRETFx4sRYtmxZlX/b3bt3j86dO1f7b3tNnlOo6pvrUN02rVu3jqZNm9Y4Vn0ey6iqunUYNWpUtG3bNr7zne/E5ZdfHl988UW1Yzge1l5tx8PEiRNj8uTJdXp+WNvjoeajjTr75JNPIiKiffv2VS5v37595XXfNGfOnPjqq69Wu88777yzfibayCxZsiQuvfTSOPHEE6N169bVbterV68oKyuLbt26Vb702Lt373jrrbeiuLg444w3Hf369Ytjjz02unbtGtOnT4///M//jP79+8eLL74YTZo0WWV7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m29Wbv+zn/0srr/++vjss8+iTZs2ceaZZ0aTJk3i17/+deU2L7zwQhxwwAGxaNGiaNGiRUPcLAAamFc+AKhiypQp8fLLL8eJJ54YERFNmzaNE044IUaOHFl5fc+ePavss9dee1X5/vXXX4+ysrJo1apV5ddhhx0WK1asiPLy8jw3BIANTtOGngAAG5aRI0fG8uXLq5xgnlKKoqKiuP322+s0xueffx4/+tGPYujQoatc17lz53U2VwA2LuIDgErLly+P3/zmN/Ff//Vfceihh1a57phjjokHHnggunXrFk8++WSV61555ZUq3++xxx7x9ttvx/bbb7/e5wzAxsM5HwBUevTRR+OEE06I2bNnR0lJSZXrLr300nj22WfjoYceim7dusWFF14YZ5xxRkyePDkuvvji+Oijj2L+/PlRUlISb7zxRuy9995x+umnx5lnnhmbbbZZvP322zFu3Lg6v3oCwKbHOR8AVBo5cmT07dt3lfCIiBgwYEC8+uqrsXDhwnj44YdjzJgx0aNHj7jrrrsqP+2qqKgoIiJ69OgRzz//fLz77rvRu3fv2H333eOqq67yt0IAGjmvfACw1q6//vr41a9+FR9++GFDTwWADZhzPgCotzvvvDN69uwZW2yxRfzlL3+J4cOH+xseANRKfABQb1OnTo3rrrsu5s2bF507d46LL744Lr/88oaeFgAbOG+7AgAAsnDCOQAAkIX4AAAAshAfAABAFuIDAADIQnwAAABZiA8AACAL8QEAAGQhPgAAgCz+H5vgjBoO/VN3AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Box plot для столбца 'Age'\n", - "plt.figure(figsize=(10, 6))\n", - "sns.boxplot(x=df['Age'])\n", - "plt.title('Box Plot для Age')\n", - "plt.xlabel('Age')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Теперь проверим на шум" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1YAAAIjCAYAAAAAxIqtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKEUlEQVR4nO3dd3xUVf7/8fekhzQw1EAKTSIdERCQpiiwLEgRsEJAQBFFFleRdemyKFhYYZFFad8VG2wAFVmluksVKSKCSIko0iSQIiQkIef3B78MDGkz3CSTgdfz8cjjkdx75sxn5t5zk3fuvWdsxhgjAAAAAMB183J3AQAAAADg6QhWAAAAAGARwQoAAAAALCJYAQAAAIBFBCsAAAAAsIhgBQAAAAAWEawAAAAAwCKCFQAAAABYRLACAAAAAIsIVgBQCv3000+y2WxauHChu0tBCYqLi1NMTIy7y3BJ+/bt1b59++t6rM1m04QJE4q0npKS1xidMGGCbDabU49fuHChbDabfvrpp+IpEECJI1gBKFHfffedHnjgAUVHRysgIEBVq1bVvffeq5kzZxbbc77//vuaMWNGruXHjx/XhAkTtHv37mJ77mtt2LBBNpvN/uXr66saNWqof//+OnLkSJE8x+bNmzVhwgQlJSUVSX/u9vnnn8tmsykiIkLZ2dnuLseSmJgYh+1/9Vd6erq7yyvVUlJSNHHiRDVq1EjBwcEKDAxU/fr1NXr0aB0/ftzd5eXrb3/7m5YvX+7uMgCUAB93FwDg5rF582Z16NBBUVFRGjJkiCpXrqxffvlFW7du1d///nc988wzxfK877//vvbu3auRI0c6LD9+/LgmTpyomJgYNW7cuFieOz8jRoxQs2bNlJmZqZ07d2ru3LlauXKlvvvuO0VERFjqe/PmzZo4caLi4uJUtmzZoinYjRYvXqyYmBj99NNPWrdunTp27Ojukixp3LixnnvuuVzL/fz89M4773hcePzyyy+L/TmOHDmijh076ueff1afPn00dOhQ+fn5ac+ePZo3b56WLVumH3/8sdjrKMxf//pXvfjiiw7L/va3v+mBBx5Qjx49HJY/9thjevDBB+Xv71+CFQIoTgQrACVmypQpCgsL0/bt23P9wX/69Gn3FFUMzp8/r6CgoALbtGnTRg888IAkaeDAgbr11ls1YsQILVq0SGPGjCmJMj3C+fPntWLFCk2dOlULFizQ4sWLPT5YVa1aVY8++mie67y8PO9CEj8/v2LtPysrS7169dKpU6e0YcMG3XXXXQ7rp0yZoldffbVYa3CWj4+PfHyc+9PK29tb3t7exVwRgJLkeUdwAB7r8OHDqlevXp5nUSpWrJhr2XvvvafmzZurTJkyKleunNq2bevw3/EVK1aoa9euioiIkL+/v2rWrKnJkyfr0qVL9jbt27fXypUrdfToUfslVzExMdqwYYOaNWsm6XKwyVl39f0S27ZtU+fOnRUWFqYyZcqoXbt22rRpk0ONOfdU7Nu3Tw8//LDKlSuX6w8/Z9x9992SpISEhALbrVu3Tm3atFFQUJDKli2r+++/X/v373eo5/nnn5ckVa9e3f66nLmPI79L1DZs2JCrbVxcXJ5tr71fZunSpbrjjjsUEhLi0O61114rtB5JWrZsmdLS0tSnTx89+OCDio+Pz/OSubS0NI0YMULly5dXSEiIunfvrl9//TXPmn799VcNGjRIlSpVkr+/v+rVq6f58+c7VU9e/U2fPl02m+267zO62rX3WOXcx/Paa69p7ty5qlmzpvz9/dWsWTNt377d4bF79uxRXFycatSooYCAAFWuXFmDBg1SYmKiQ7ucffbQoUP2s5phYWEaOHCgLly4kKumwsbhtfdYZWRkaNy4cWratKnCwsIUFBSkNm3aaP369df1nvz73//Wt99+q5deeinPsRUaGqopU6Y4LFuyZImaNm2qwMBAlS9fXo8++qh+/fVXhzZxcXEKDg7Wr7/+qh49eig4OFgVKlTQn//8Z4djiCQlJSUpLi5OYWFhKlu2rAYMGJDnpbbX3mNls9l0/vx5LVq0yL7vx8XFScr/HqvZs2erXr168vf3V0REhIYPH57rudq3b6/69etr37596tChg8qUKaOqVatq2rRphbybAIoTZ6wAlJjo6Ght2bJFe/fuVf369QtsO3HiRE2YMEGtWrXSpEmT5Ofnp23btmndunW67777JF3+wyQ4OFijRo1ScHCw1q1bp3HjxiklJUXTp0+XJL300ktKTk7WsWPH9Oabb0qSgoODddttt2nSpEkaN26chg4dqjZt2kiSWrVqJelygOnSpYuaNm2q8ePHy8vLSwsWLNDdd9+t//3vf2revLlDvX369FHt2rX1t7/9TcYYl9+bw4cPS5LCw8PzbbNmzRp16dJFNWrU0IQJE5SWlqaZM2eqdevW2rlzp2JiYtSrVy/9+OOP+uCDD/Tmm2+qfPnykqQKFSo4Vce9996r/v37S5K2b9+ut956K9+25cuXt7+n0uVLm662ZcsW9e3bV40aNdIrr7yisLAwnTlzRn/605+cqkW6fBlghw4dVLlyZT344IN68cUX9emnn6pPnz4O7eLi4vTxxx/rscce05133qmvvvpKXbt2zdXfqVOndOedd8pms+npp59WhQoVtGrVKj3++ONKSUnJdbloYZKSkjR16lSXHpOZmakzZ844LCtTpozKlCmT72Pef/99paam6oknnpDNZtO0adPUq1cvHTlyRL6+vpKk1atX68iRIxo4cKAqV66s77//XnPnztX333+vrVu35ppUoW/fvqpevbqmTp2qnTt36t1331XFihUdzv44Mw6vlZKSonfffVcPPfSQhgwZotTUVM2bN0+dOnXS119/7fJlt5988omk3PtXfhYuXKiBAweqWbNmmjp1qk6dOqW///3v2rRpk3bt2uXwj51Lly6pU6dOatGihV577TWtWbNGr7/+umrWrKlhw4ZJkowxuv/++7Vx40Y9+eSTuu2227Rs2TINGDCg0Fr+9a9/afDgwWrevLmGDh0qSapZs2a+7SdMmKCJEyeqY8eOGjZsmA4cOKC3335b27dv16ZNm+zbWpLOnTunzp07q1evXurbt6+WLl2q0aNHq0GDBurSpYtT7xWAImYAoIR8+eWXxtvb23h7e5uWLVuaF154wXzxxRcmIyPDod3BgweNl5eX6dmzp7l06ZLDuuzsbPv3Fy5cyPUcTzzxhClTpoxJT0+3L+vatauJjo7O1Xb79u1GklmwYEGu56hdu7bp1KlTruerXr26uffee+3Lxo8fbySZhx56yKn3YP369UaSmT9/vvntt9/M8ePHzcqVK01MTIyx2Wxm+/btxhhjEhISctXWuHFjU7FiRZOYmGhf9u233xovLy/Tv39/+7Lp06cbSSYhIcGpmowxJiMjw0gyTz/9tH3ZkiVLjCSzfv36XO0feeQRU716dYdlksz48ePtP48ZM8ZIMidOnLAvy3ld06dPL7SmU6dOGR8fH/POO+/Yl7Vq1crcf//9Du127NhhJJmRI0c6LI+Li8tV0+OPP26qVKlizpw549D2wQcfNGFhYXnuUwW9xhdeeMFU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N23aVDVr1tRrr72m33//Pdfjfvvtt3xfY3GpUqWKGjdurEWLFjnUu3fvXn355Zf6wx/+YF+W3+sqyNKlS1WnTh3FxsYW2nbFihVKS0vL9YdrXmbOnKl169bZP3+qdevWTtWzePFitWnTRv369dMDDzzg8JUznfwHH3wgSerUqZMk5dr2M2fOdPjZ29tbvXv31r///W/t3bs313M6u123bNmiFStW6JVXXrmuEFsc8hoPkjRjxozr7tOZcehsLdu2bdOWLVuuq44HHnhADRo00JQpU/LsIzU1VS+99JKky/8YqFixoubMmaOLFy/a26xatUr79+/Pc6bIwvzhD39QVlaW3n77bfuyS5cu5dq/8hMUFOTUWOzYsaP8/Pz01ltvObx38+bNU3Jy8nXVDqBkccYKQIl55plndOHCBfXs2VOxsbHKyMjQ5s2b9dFHHykmJkYDBw6UdPnemJdeekmTJ09WmzZt1KtXL/n7+2v79u2KiIjQ1KlT1apVK5UrV04DBgzQiBEjZLPZ9K9//SvPP/iaNm2qjz76SKNGjVKzZs0UHBysbt26qWbNmipbtqzmzJmjkJAQBQUFqUWLFqpevbreffdddenSRfXq1dPAgQNVtWpV/frrr1q/fr1CQ0P16aeflvTbp+nTp6tLly5q2bKlHn/8cft062FhYQ6frdS0aVNJl6eaf/DBB+Xr66tu3brlef/VkSNHNG3aNH399dfq1auX3nvvPfu6nEvxVq9eraioKFWuXFnjx4/X7Nmz1apVq3yn287x/fff64UXXtCECRPsnxnmjG3btunQoUN6+umn81xftWpV3X777Vq8eLFGjx6tpk2bqnfv3poxY4YSExPt063/+OOPkhzPGLzyyitav369WrRooSFDhqhu3bo6e/asdu7cqTVr1ujs2bOF1vfll1/q3nvvLVVnEEJDQ9W2bVtNmzZNmZmZqlq1qr788stCPxetIM6Mw7z88Y9/VHx8vHr27KmuXbsqISFBc+bMUd26dfP8R0VhfH19FR8fr44dO6pt27bq27evWrduLV9fX33//fd6//33Va5cOU2ZMkW+vr569dVXNXDgQLVr104PPfSQfbr1mJgYl6b6z9GtWze1bt1aL774on766SfVrVtX8fHxTt/H2bRpU61Zs0ZvvPGGIiIiVL16dbVo0SJXuwoVKmjMmDGaOHGiOnfu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0mPgnJxQdfToUa1evbrAs1V5KVu2rG699VYdOnSomCq8+dSoUUPly5fP9z1lPBSv//3vfzpw4IAGDx7s8mMZD855+umn9dlnn2n9+vWqVq2afXnlypWVkZGhpKQkh/YF7dvX8zsFl+W3HXKkpqaqc+fOCgkJ0bJly+Tr6+tS/4Udy3BZYdvhai1atJCkfN9TxsP1c2Y7LF26VBcuXFD//v1d7v96xgPBCoWqXr26KleurLVr19qXpaSkaNu2bWrZsmWej/Hz81PTpk0dHpOdna21a9fm+xgULidUHTx4UGvWrFF4eLjLffz+++86fPiwqlSpUgwV3pyOHTumxMTEfN9TxkPxmjdvnpo2bapGjRq5/FjGQ8GMMXr66ae1bNkyrVu3TtWrV3dY37RpU/n6+jrs2wcOHNDPP/+c7759Pb9TbnaFbQfp8nt43333yc/PT5988kmhZ2/zUtix7GbnzHa41u7duyUp3/eU8eA6V7bDvHnz1L17d1WoUMHl57mu8WBp6gvcMFJTU82uXbvMrl27jCTzxhtvmF27dtlnm3vllVdM2bJlzYoVK8yePXvM/fffb6pXr27S0tLsfdx9991m5syZ9p8//PBD4+/vbxYuXGj27dtnhg4dasqWLWtOnjxZ4q/PUxS0HTIyMkz37t1NtWrVzO7du82JEyfsXxcvXrT3ce12eO6558yGDRtMQkKC2bRpk+nYsaMpX768OX36tDteokcoaDukpqaaP//5z2bLli0mISHBrFmzxtx+++2mdu3aJj093d4H48G6wo5LxhiTnJxsypQpY95+++08+2A8WDNs2DATFhZmNmzY4HDMuXDhgr3Nk08+aaKiosy6devMN998Y1q2bGlatmzp0E+dOnVMfHy8/WdnfqfgisK2Q3JysmnRooVp0KCBOXTokEObrKwsez9Xbwdnj2W4orDtcOjQITNp0iTzzTffmISEBLNixQpTo0YN07ZtW4d+GA/WOHNcMsaYgwcPGpvNZlatWpVnP8UxHghWMMYYs379eiMp19eAAQOMMZenAx07dqypVKmS8ff3N/fcc485cOCAQx/R0dFm/PjxDstmzpxpoqKijJ+fn2nevLnZunVrCb0iz1TQdkhISMhznSSzfv16ex/Xbod+/fqZKlWqGD8/P1O1alXTr18/c+jQoZJ/cR6koO1w4cIFc99995kKFSoYX19fEx0dbYYMGZIrIDEerCvsuGSMMf/85z9NYGCgSUpKyrMPxoM1+R1zFixYYG+TlpZmnnrqKVOuXDlTpkwZ07NnT3PixIlc/Vz9GGd+p+CKwrZDfmNFkklISHDoJ+cxzh7LcEVh2+Hnn382bdu2Nbfccovx9/c3tWrVMs8//7xJTk7O1Q/j4fo5c1wyxpgxY8aYyMhIc+nSpXz7KerxYPv/HQMAAAAArhP3WAEAAACARQQrAAAAALCIYAUAAAAAFhGsAAAAAMAighUAAAAAWESwAgAAAACLCFYAAAAAYBHBCgAAAAAsIlgBAAAAgEUEKwDATWfLli3y9vZW165d3V0KAOAGYTPGGHcXAQBASRo8eLCCg4M1b948HThwQBEREe4uCQDg4ThjBQC4qfz+++/66KOPNGzYMHXt2lULFy50WP/JJ5+odu3aCggIUIcOHbRo0SLZbDYlJSXZ22zcuFFt2rRRYGCgIiMjNWLECJ0/f75kXwgAoFQhWAEAbioff/yxYmNjVadOHT366KOaP3++ci7eSEhI0AMPPKAePXro22+/1RNPPKGXXnrJ4fGHDx9W586d1bt3b+3Zs0cfffSRNm7cqKefftodLwcAUEpwKSAA4KbSunVr9e3bV88++6yysrJUpUoVLVmyRO3bt9eLL76olStX6rvvvrO3/+tf/6opU6bo3LlzKlu2rAYPHixvb2/985//tLfZuHGj2rVrp/PnzysgIMAdLwsA4GacsQIA3DQOHDigr7/+Wg899JAkycfHR/369dO8efPs65s1a+bwmObNmzv8/O2332rhwoUKDg62f3Xq1EnZ2dlKSEgomRcCACh1fNxdAAAAJWXevHnKyspymKzCGCN/f3/NmjXLqT5+//13PfHEExoxYkSudVFRUUVWKwDAsxCsAAA3haysLP3f//2fXn/9dd13330O63r06KEPPvhAderU0eeff+6wbvv27Q4/33777dq3b59q1apV7DUDADwH91gBAG4Ky5cvV79+/XT69GmFhYU5rBs9erTWrVunjz/+WHXq1NGf/vQnPf7449q9e7eee+45HTt2TElJSQoLC9OePXt05513atCgQRo8eLCCgoK0b98+rV692umzXgCAGw/3WAEAbgrz5s1Tx44dc4UqSerdu7e++eYbpaamaunSpYqPj1fDhg319ttv22cF9Pf3lyQ1bNhQX331lX788Ue1adNGTZo00bhx4/gsLAC4yXHGCgCAAkyZMkVz5szRL7/84u5SAAClGPdYAQBwldmzZ6tZs2YKDw/Xpk2bNH36dD6jCgBQKIIVAABXOXjwoF5++WWdPXtWUVFReu655zRmzBh3lwUAKOW4FBAAAAAALGLyCgAAAACwiGAFAAAAABYRrAAAAADAIoIVAAAAAFhEsAIAAAAAiwhWAAAAAGARwQoAAAAALCJYAQAAAIBF/w9QGXIrORoYpAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Scatter plot для столбцов 'Age' и 'Financial Condition'\n", - "plt.figure(figsize=(10, 6))\n", - "sns.scatterplot(x='Age', y='Financial Condition', data=df)\n", - "plt.title('Scatter Plot для Age и Financial Condition')\n", - "plt.xlabel('Age')\n", - "plt.ylabel('Financial Condition')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Удаление строк с пустыми значениями" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "df_cleaned = df.dropna()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Разбиение набора данных на обучающую, контрольную и тестовую выборки" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 723\n", - "Размер контрольной выборки: 241\n", - "Размер тестовой выборки: 241\n" - ] - } - ], - "source": [ - "# Разделение на обучающую и тестовую выборки\n", - "train_df, test_df = train_test_split(df, test_size=0.2, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную\n", - "train_df, val_df = train_test_split(train_df, test_size=0.25, random_state=42)\n", - "\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Применение методов приращения данных (аугментации)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение Gender в обучающей выборке после oversampling:\n", - "Gender\n", - "Male 397\n", - "Female 397\n", - "Name: count, dtype: int64\n", - "\n", - "Распределение Gender в контрольной выборке после oversampling:\n", - "Gender\n", - "Male 140\n", - "Female 140\n", - "Name: count, dtype: int64\n", - "\n", - "Распределение Gender в тестовой выборке после oversampling:\n", - "Gender\n", - "Female 126\n", - "Male 126\n", - "Name: count, dtype: int64\n", - "\n", - "Распределение Gender в обучающей выборке после undersampling:\n", - "Gender\n", - "Female 326\n", - "Male 326\n", - "Name: count, dtype: int64\n", - "\n", - "Распределение Gender в контрольной выборке после undersampling:\n", - "Gender\n", - "Female 101\n", - "Male 101\n", - "Name: count, dtype: int64\n", - "\n", - "Распределение Gender в тестовой выборке после undersampling:\n", - "Gender\n", - "Female 115\n", - "Male 115\n", - "Name: count, dtype: int64\n", - "\n" - ] - } - ], - "source": [ - "# Разделение на обучающую и тестовую выборки\n", - "train_df, test_df = train_test_split(df, test_size=0.2, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную\n", - "train_df, val_df = train_test_split(train_df, test_size=0.25, random_state=42)\n", - "\n", - "def check_balance(df, name):\n", - " counts = df['Gender'].value_counts()\n", - " print(f\"Распределение Gender в {name}:\")\n", - " print(counts)\n", - " print()\n", - "\n", - "def oversample(df):\n", - " X = df.drop('Gender', axis=1)\n", - " y = df['Gender']\n", - " \n", - " oversampler = RandomOverSampler(random_state=42)\n", - " X_resampled, y_resampled = oversampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "train_df_oversampled = oversample(train_df)\n", - "val_df_oversampled = oversample(val_df)\n", - "test_df_oversampled = oversample(test_df)\n", - "\n", - "check_balance(train_df_oversampled, \"обучающей выборке после oversampling\")\n", - "check_balance(val_df_oversampled, \"контрольной выборке после oversampling\")\n", - "check_balance(test_df_oversampled, \"тестовой выборке после oversampling\")\n", - "\n", - "def undersample(df):\n", - " X = df.drop('Gender', axis=1)\n", - " y = df['Gender']\n", - " \n", - " undersampler = RandomUnderSampler(random_state=42)\n", - " X_resampled, y_resampled = undersampler.fit_resample(X, y)\n", - " \n", - " resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n", - " return resampled_df\n", - "\n", - "train_df_undersampled = undersample(train_df)\n", - "val_df_undersampled = undersample(val_df)\n", - "test_df_undersampled = undersample(test_df)\n", - "\n", - "check_balance(train_df_undersampled, \"обучающей выборке после undersampling\")\n", - "check_balance(val_df_undersampled, \"контрольной выборке после undersampling\")\n", - "check_balance(test_df_undersampled, \"тестовой выборке после undersampling\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aimenv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/lab_3/lab3.ipynb b/lab_3/lab3.ipynb deleted file mode 100644 index 27b21b3..0000000 --- a/lab_3/lab3.ipynb +++ /dev/null @@ -1,1408 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Набор данных с ценами на мобильные устройства" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Вывод всех столбцов" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['Unnamed: 0', 'Name', 'Rating', 'Spec_score', 'No_of_sim', 'Ram',\n", - " 'Battery', 'Display', 'Camera', 'External_Memory', 'Android_version',\n", - " 'Price', 'company', 'Inbuilt_memory', 'fast_charging',\n", - " 'Screen_resolution', 'Processor', 'Processor_name'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "import pandas as pd \n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "print(df.columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Бизнес-цели:\n", - "1. Классифицировать мобильные устройства по ценовым категориям (например, бюджетные, средний класс, флагманы).\n", - "2. Определить, какие характеристики мобильных устройств наиболее сильно влияют на их рейтинг." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Выполним разбиение на 3 выборки: обучающую, контрольную и тестовую" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 671\n", - "Размер контрольной выборки: 288\n", - "Размер тестовой выборки: 411\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение классов в company:\n", - "company\n", - "Vivo 186\n", - "Realme 186\n", - "Samsung 181\n", - "Motorola 127\n", - "Xiaomi 90\n", - "Honor 88\n", - "Poco 75\n", - "OnePlus 75\n", - "Huawei 62\n", - "iQOO 57\n", - "OPPO 38\n", - "Oppo 27\n", - "TCL 26\n", - "Google 23\n", - "Asus 21\n", - "POCO 19\n", - "Lava 19\n", - "Nothing 15\n", - "Lenovo 14\n", - "Tecno 13\n", - "itel 12\n", - "LG 6\n", - "Gionee 5\n", - "Itel 3\n", - "IQOO 1\n", - "Coolpad 1\n", - "Name: count, dtype: int64\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAHHCAYAAAD3WI8lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACIwklEQVR4nOzdeXwN1//48ddNyM2+WRIhRFZBEGsJYm1CbS0NmiKkqF1Rmo9dEUtttVaL0NprLa211tiXWCqIEKL2LSEqiWR+f/iZrytBRLhZ3s/HYx7NnTlz5n3mJu67Z849R6MoioIQQgghhPigDPQdgBBCCCFEXiRJmBBCCCGEHkgSJoQQQgihB5KECSGEEELogSRhQgghhBB6IEmYEEIIIYQeSBImhBBCCKEHkoQJIYQQQuiBJGFCCCGEEHogSZgQQgghhB5IEibEK4SFhaHRaNTN2NgYd3d3evbsyc2bN/UdnhBCiBwun74DECK7GzVqFCVLluTJkyfs3buX2bNn8+eff3L69GlMTU31HZ4QQogcSpIwId6gUaNGVK5cGYCvvvqKAgUKMHnyZNatW0fbtm31HJ0QQoicSh5HCvGW6tWrB8ClS5cAuHfvHgMGDMDLywtzc3MsLS1p1KgRJ06cSHPukydPGDFiBO7u7hgbG1OkSBE+++wzoqOjAYiJidF5BPryVqdOHbWunTt3otFoWL58Of/73/+wt7fHzMyMZs2aERsbm+baBw8exN/fHysrK0xNTfH19SU8PDzdNtapUyfd648YMSJN2d9++41KlSphYmKCra0tbdq0Sff6r2vbi1JTU5k6dSplypTB2NgYOzs7unbtyv3793XKOTk50aRJkzTX6dmzZ5o604t94sSJae4pQGJiIsOHD8fV1RWtVoujoyMDBw4kMTEx3Xv1ojp16qSpb8yYMRgYGLBkyZJM3Y8ffviBGjVqUKBAAUxMTKhUqRK///57utf/7bffqFq1KqamptjY2FC7dm22bNmiU+avv/7C19cXCwsLLC0tqVKlSprYVq5cqb6nBQsW5Msvv+Tff//VKRMUFKQTs42NDXXq1GHPnj1vvE/vci7A2bNnCQgIoFChQpiYmODh4cHgwYN1yhw/fpxGjRphaWmJubk59evX58CBAzplng852Lt3L71796ZQoUJYW1vTtWtXkpKSePDgAe3bt8fGxgYbGxsGDhyIoijq+c/fwx9++IEpU6ZQokQJTExM8PX15fTp0zrXOnnyJEFBQTg7O2NsbIy9vT2dOnXi7t27OuVGjBiBRqPhwoULBAUFYW1tjZWVFR07duTx48dqOV9fX8qXL5/u/fHw8MDPzy9D91Lol/SECfGWnidMBQoUAODixYusXbuWzz//nJIlS3Lz5k1++uknfH19OXPmDA4ODgCkpKTQpEkTtm/fTps2bejTpw8PHz5k69atnD59GhcXF/Uabdu2pXHjxjrXDQkJSTeeMWPGoNFoGDRoELdu3WLq1Kk0aNCAiIgITExMAPj7779p1KgRlSpVYvjw4RgYGLBgwQLq1avHnj17qFq1app6ixUrRmhoKACPHj2iW7du6V576NChBAQE8NVXX3H79m2mT59O7dq1OX78ONbW1mnO6dKlC7Vq1QJg9erVrFmzRud4165dCQsLo2PHjvTu3ZtLly4xY8YMjh8/Tnh4OPnz50/3PryNBw8eqG17UWpqKs2aNWPv3r106dIFT09PTp06xZQpUzh//jxr1659q+ssWLCAIUOGMGnSJL744ot0y7zpfkybNo1mzZoRGBhIUlISy5Yt4/PPP2fDhg188sknarmRI0cyYsQIatSowahRozAyMuLgwYP8/ffffPzxx8CzpKNTp06UKVOGkJAQrK2tOX78OJs2bVLje37vq1SpQmhoKDdv3mTatGmEh4eneU8LFizIlClTALh69SrTpk2jcePGxMbGpvvevyiz5548eZJatWqRP39+unTpgpOTE9HR0fzxxx+MGTMGgH/++YdatWphaWnJwIEDyZ8/Pz/99BN16tRh165dVKtWTafOXr16YW9vz8iRIzlw4ABz587F2tqaffv2Ubx4ccaOHcuff/7JxIkTKVu2LO3bt9c5f9GiRTx8+JAePXrw5MkTpk2bRr169Th16hR2dnYAbN26lYsXL9KxY0fs7e35559/mDt3Lv/88w8HDhxIk3wHBARQsmRJQkNDOXbsGL/88guFCxdm/PjxALRr147OnTtz+vRpypYtq553+PBhzp8/z5AhQ157/0U2oQgh0rVgwQIFULZt26bcvn1biY2NVZYtW6YUKFBAMTExUa5evaooiqI8efJESUlJ0Tn30qVLilarVUaNGqXumz9/vgIokydPTnOt1NRU9TxAmThxYpoyZcqUUXx9fdXXO3bs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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение классов в Обучающей выборке:\n", - "company\n", - "Vivo 138\n", - "Samsung 128\n", - "Realme 125\n", - "Motorola 89\n", - "Xiaomi 66\n", - "Honor 59\n", - "OnePlus 56\n", - "Poco 52\n", - "Huawei 46\n", - "iQOO 37\n", - "Oppo 21\n", - "OPPO 20\n", - "Google 16\n", - "Lava 16\n", - "POCO 14\n", - "TCL 14\n", - "Asus 12\n", - "Lenovo 12\n", - "itel 10\n", - "Nothing 8\n", - "Tecno 8\n", - "LG 5\n", - "Gionee 4\n", - "IQOO 1\n", - "Itel 1\n", - "Coolpad 1\n", - "Name: count, dtype: int64\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAHHCAYAAAD3WI8lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOiklEQVR4nOzdd1gVR/vw8e8B5dBBLIAGRZqioqJYsTfsmmhQQ1SMUR+7sYbYjYoltlhjLKixd2MSscSKvWCJKIgSsRcUrICw7x++7M8joEhQ2v25rr307M7O3ruHcjMzZ0ajKIqCEEIIIYT4pPQyOwAhhBBCiNxIkjAhhBBCiEwgSZgQQgghRCaQJEwIIYQQIhNIEiaEEEIIkQkkCRNCCCGEyASShAkhhBBCZAJJwoQQQgghMoEkYUIIId7pyZMnRERE8OzZs8wORWSwx48fc+XKFV69epXZoeRKkoQJIYTQoSgKCxcupGrVqhgbG2Nubk7x4sX57bffMju0bOHGjRsEBASoryMiIli5cmXmBfSG+Ph4pkyZQrly5dBqteTLlw9nZ2f27NmT2aHlSpKEiQwREBCARqNRN0NDQ1xcXOjTpw93797N7PCEyNWCgoL4/PPPsba2RqvVYm9vT48ePbh+/XqK5b/66iv+97//4erqyooVK9i1axe7d+/miy+++MSRZ08ajYbevXsTGBhIREQEQ4cO5eDBg5kdFrGxsTRo0ICRI0dSp04d1q9fz65du/j777+pVq1aZoeXK+XJ7ABEzjJu3DiKFy/Oy5cvOXToEPPnz+fPP//kwoULGBsbZ3Z4QuQ6s2fPpn///jg4ONC3b19sbW0JCQlh0aJFrF27lj///JPq1aur5ZcvX87atWv57bff+OqrrzIx8uyrSJEidOvWjcaNGwNga2vLvn37MjcoYPLkyRw7dozAwEDq1KmT2eEIQCMLeIuMEBAQQJcuXThx4gQeHh7q/kGDBjF9+nRWrVpFhw4dMjFCIXKfoKAgatWqhaenJzt27ND5Qyg8PBxPT0/09PT4559/yJcvHwBubm6ULVs2y3SfZWfh4eE8ePCAMmXKYGJikqmxvHr1ikKFCtGzZ08mTJiQqbGI/yPdkeKjqlevHgDXrl0DICoqisGDB+Pm5oapqSnm5uY0adKEs2fPJjv35cuXjBkzBhcXFwwNDbG1teWLL74gPDwceD3O4s0u0Le3N//S27dvHxqNhrVr1/LDDz9gY2ODiYkJLVu2JDIyMtm1jx07RuPGjbGwsMDY2JjatWsTFBSU4j3WqVMnxeuPGTMmWdnffvuNihUrYmRkhJWVFe3bt0/x+u+6tzclJiYyc+ZMSpcujaGhIdbW1vTo0YNHjx7plLO3t6d58+bJrtOnT59kdaYU+9SpU5M9U3jdvTF69GicnJzQarXY2dkxdOhQYmNjU3xWb6pTp06y+iZMmICenh6rVq1K1/P46aefqF69Ovnz58fIyIiKFSuyYcOGFK//22+/UblyZYyNjcmXLx+1atVi586dOmX++usvateujZmZGebm5lSqVClZbOvXr1ff0wIFCvD1119z8+ZNnTK+vr46MefLl486deqkqYvqv5z7448/otFoWLZsWbKWaEdHR6ZMmcLt27f55ZdfAHj27BkXLlzAzs6OZs2aYW5ujomJSbLrXb16FY1Gw4wZM5Jd8/Dhw2g0GlavXg2k/D4nvZ9vjps6d+4cvr6+ODg4YGhoiI2NDd988w0PHz7UOTdp6ENERIS6LzAwkOrVq2NsbIyFhQXNmzfnwoULOueNGTMGjUbDgwcP1H0nT55MFgdAmTJlUmwp+uuvv6hZsyYmJiaYmZnRrFkz/vnnH50yvr6+2Nvbq8+4SpUqREVFYWRklCzulKT1/U7tezpJ0s+8pBa4y5cv8+jRI8zMzKhdu/Y7nxXAmTNnaNKkCebm5piamlK/fn2OHj2qUybpvThw4AA9evQgf/78mJub06lTpxR/Bvn6+urs6969O4aGhslaCdPynHMK6Y4UH1VSwpQ/f37g9Q/vLVu28OWXX1K8eHHu3r3LL7/8Qu3atbl48SKFCxcGICEhgebNm7Nnzx7at29P//79efLkCbt27eLChQs4Ojqq1+jQoQNNmzbVua6fn1+K8UyYMAGNRsOwYcO4d+8eM2fOpEGDBgQHB2NkZATA33//TZMmTahYsSKjR49GT0+PpUuXUq9ePQ4ePEjlypWT1fvZZ5/h7+8PwNOnT+nZs2eK1x45ciTe3t58++233L9/n9mzZ1OrVi3OnDmDpaVlsnO6d+9OzZo1Adi0aRObN2/WOd6jRw+1FbJfv35cu3aNOXPmcObMGYKCgsibN2+Kz+FDPH78WL23NyUmJtKyZUsOHTpE9+7dcXV15fz588yYMYPQ0FC2bNnyQddZunQpI0aMYNq0aal2g73vecyaNYuWLVvi4+NDXFwca9as4csvv2T79u00a9ZMLTd27FjGjBlD9erVGTduHAYGBhw7doy///6bRo0aAa9/wXzzzTeULl0aPz8/LC0tOXPmDDt27FDjS3r2lSpVwt/fn7t37zJr1iyCgoKSvacFChRQk5YbN24wa9YsmjZtSmRkZIrv/ZvSc+7z58/Zs2cPNWvWpHjx4imWadeuHd27d2f79u18//33asIzefJkbGxsGDJkCIaGhvz66680aNCAXbt2UatWLRwcHPD09GTlypV89913OnWuXLkSMzMzWrVq9c57etuuXbu4evUqXbp0wcbGhn/++YeFCxfyzz//cPTo0WQJd5KDBw/StGlTihUrxujRo4mPj2fevHl4enpy4sQJXFxcPiiO1KxYsYLOnTvj5eXF5MmTef78OfPnz6dGjRqcOXNGTbxSMmrUKF6+fJnma/2Xr5XUJL23fn5+ODs7M3bsWF6+fMncuXOTPat//vmHmjVrYm5uztChQ8mbNy+//PILderUYf/+/VSpUkWn7j59+mBpacmYMWO4fPky8+fP599//1UTwZSMHj2axYsXs3btWp2E978852xJESIDLF26VAGU3bt3K/fv31ciIyOVNWvWKPnz51eMjIyUGzduKIqiKC9fvlQSEhJ0zr127Zqi1WqVcePGqfuWLFmiAMr06dOTXSsxMVE9D1CmTp2arEzp0qWV2rVrq6/37t2rAEqRIkWUmJgYdf+6desUQJk1a5Zat7Ozs+Ll5aVeR1EU5fnz50rx4sWVhg0bJrtW9erVlTJlyqiv79+/rwDK6NGj1X0RERGKvr6+MmHCBJ1zz58/r+TJkyfZ/rCwMAVQli1bpu4bPXq08ua37MGDBxVAWblypc65O3bsSLa/WLFiSrNmzZLF3rt3b+XtHwNvxz506FClUKFCSsWKFXWe6YoVKxQ9PT3l4MGDOucvWLBAAZSgoKBk13tT7dq11fr++OMPJU+ePMqgQYNSLJuW56Eor9+nN8XFxSllypRR6tWrp1OXnp6e8vnnnyf7Wkx6zx8/fqyYmZkpVapUUV68eJFimbi4OKVQoUJKmTJldMps375dAZRRo0ap+zp37qwUK1ZMp56FCxcqgHL8+PEU7/m/nhscHKwASv/+/d9Zf9myZRUrKytFUf7ve8rAwEAJDQ1Vy9y/f1/Jnz+/UrFiRXXfL7/8ogBKSEiIui8uLk4pUKCA0rlzZ3Vf3bp1lVq1aulcM+k6S5cuVfe9/d4piqKsXr1aAZQDBw6o+5J+1ly7dk1RFEWpWLGiYmFhody5c0ctExoaquTNm1dp06aNui/p6+X+/fvqvhMnTiSLQ1GS//x48uSJYmlpqXTr1k2n3J07dxQLCwud/W+/XxcuXFD09PSUJk2a6MSdmrS+36l9TydJ+pm3d+9endcFChRQHjx4oJZL6Vm1bt1aMTAwUMLDw9V9t27dUszMzHTey6T3omLFikpcXJy6f8qUKQqgbN26VSfepK+LpK+d2bNn68T8Ic85p5DuSJGhGjRoQMGCBbGzs6N9+/aYmpqyefNmihQpAoBWq0VP7/WXXUJCAg8fPsTU1JQSJUpw+vRptZ6NGzdSoEAB+vbtm+waqf1llRadOnXCzMxMfd22bVtsbW35888/AQgODiYsLIyvvvqKhw8f8uDBAx48eMCzZ8+oX78+Bw4cIDExUafOly9fYmho+M7rbtq0icTERLy9vdU6Hzx4gI2NDc7Ozuzdu1enfFxcHPD6eaVm/fr1WFhY0LBhQ506K1asiKmpabI64+Pjdco9ePDgvX+d37x5k9mzZzNy5EhMTU2TXd/V1ZWSJUvq1JnUBf329VNz/PhxvL29adOmDVOnTk2xTFqeB6C2ZgI8evSI6OhoatasqfO1tWXLFhITExk1apT6tZgk6Wtr165dPHnyhO+//z7Ze5tU5uTJk9y7d49evXrplGnWrBklS5bkjz/+0DkvMTFRfUbBwcEsX74cW1tbXF1d33lP6T33yZMnADpf7ykxMzMjJiZGZ1+rVq1wdnZWXxcoUABfX19OnTqlftrZ29sbQ0NDnbFjgYGBPHjwgK+//lrdV6hQIW7cuPHee3zzvXv58iUPHjygatWqADrvX5JHjx4RGhrKqVOn8PHxwdraWj3m7OxMy5Yt2bFjBwkJCe+99vvs2rWLx48f06FDB52vdX19fapUqfLOr3U/Pz8qVKjAl19+mebrpfX9TvqefvjwYZrn+erSpYvaMwHJn1VCQgI7d+6kdevWODg4qOVsbW356quvOHToULKvl+7du+u0uvfs2ZM8efKoP1fftHXrVnr16sWQIUPo06ePzrH/8pyzK+mOFBlq7ty5uLi4kCdPHqytrSlRooTOL7rExERmzZrFvHnzuHbtms4PyDd/MISHh1OiRAny5MnYL9E3f7HA61+oTk5O6jiNsLAwADp37pxqHdHR0eogZoAHDx4kq/dtYWFhKIqSarm3uw0fP34MkCzxebvO6OhoChUqlOLxe/fu6bzeuXMnBQsWfGecbxs9ejSFCxemR48eycZWhYWFERISkmqdb18/JTdv3qRZs2Y8e/aMhw8fpppgp+V5AGzfvp3x48cTHBysMy7tzXrDw8PR09OjVKlSqdaT1I1epkyZVMv8+++/AJQoUSLZsZIlS3Lo0CGdfZGRkTrPytbWlo0bN773ntJ7blLylZSMpebJkydq2aTnVLJkyWTlkhKAiIgIrK2tsbS0pEWLFqxatYoff/wReN0VWaRIETURB6hevTpr165l5syZtG/fnjx58iQbLwSvx4uOHTuWNWvWJPvaiY6OTla+QoUK6v9Teg9cXV3ZuHEjDx480EnQ0iPp58Kb9/Umc3PzFPcfOnSI33//nT179qQ6HUhK0vp+v/k9ra+vT9myZZk0aZLapf6m9723Sc9KURSeP3+e6jNNTEwkMjKS0qVLq/vf/rlmamqKra1tsvFvwcHBrFu3joSEBKKiopLVn97nnJ1JEiYyVOXKlXU+Hfm2iRMnMnLkSL755ht+/PFHrKys0NPTY8CAAclamDJDUgxTp06lfPnyKZZ58wdhXFwct2/fpmHDhu+tV6PR8Ndff6Gvr//OOgHu3LkDgI2NzTvrLFSoUKqfYns7OapSpQrjx4/X2Tdnzhy2bt2a4vkhISEEBATw22+/pTi2LDExETc3N6ZPn57i+XZ2dqnGnuTKlStUqFCBGTNm0LFjR5YtW5ZiApyW53Hw4EFatmxJrVq1mDdvHra2tuTNm5elS5cmG0yfGaytrdXJTqOjo1myZAmNGzfm0KFDuLm5Zfi5Tk5O5MmTh3PnzqVab2xsLJcvX1a/Z99sjUqLTp06sX79eg4fPoybmxvbtm2jV69eOn94de/encDAQL777rtk48fe5O3tzeHDhxkyZAjly5fH1NSUxMREGjdunOLPht9++43nz5/TvXv3D4o5PZKuv2LFihS/BlP7Y3HYsGF4eXlRr169ZIP/3yWt7/eb39O3bt1i8uTJfP755ykOYv/Q9/ZjOHv2LE2aNKF+/foMGTKEr7/+Wmc8WHqfc3aW8+5IZGkbNmygbt26LF68WGf/48ePKVCggPra0dGRY8eOER8fnyGDy5Mk/aWVRFEUrly5QtmyZdXrwuu/uBo0aPDe+s6ePUt8fPw7E8+kehVFoXjx4mkaKHzx4kU0Gk2Kf42+Wefu3bvx9PRM0w/YAgUKJLundw2e9/Pzo3z58rRr1y7V6589e5b69eunu4s4qSvY2tqarVu3MmjQIJo2bZosgUzL89i4cSOGhoYEBgbqdFsuXbo0WdyJiYlcvHgx1UQ76evgwoULODk5pVimWLFiwOtPnb39l/vly5fV40kMDQ11nn/Lli2xsrJizpw56qcTU5Oec01MTKhbty5///03//77b7J4ANatW0dsbKz6KbsCBQpgamrK5cuXk5W9dOkSgM7A6MaNG1OwYEFWrlxJlSpVeP78OR07dkwW+x9//EFoaCiRkZEoisLdu3d1uiwfPXrEnj17GDt2LKNGjVL3v/39+iZPT09MTEzo3r17qvGamJjo/FxJr6Svh0KFCqXp5wK8/t46cuRIil2p75PW9/vt72knJyc8PT05cOAARYsW1akz6cMZaXlWxsbGqZbT09NL9gdWWFgYdevWVV8/ffqU27dvJ/vAlJubG+vXr8fIyIj169fTvXt3zp07p3bnp+c5Z3cyJkx8Uvr6+ihvTU23fv36ZB/pb9OmDQ8ePGDOnDnJ6nj7/A+xfPlyne6ZDRs2cPv2bZo0aQJAxYoVcXR05KeffuLp06fJzr9//36y2PX19d/5UXGAL774An19fcaOHZssfkVRdD6G/+rVKzZu3EjlypXf2d3k7e1NQkKC2hX0plevXqldeOlx5MgRtm7dyqRJk1JNsLy9vbl58ya//vprsmMvXrxI0zqDLi4ualfR7NmzSUxMpH///jpl0vo89PX10Wg0Ol3cERERyRLN1q1bo6enx7hx45K1sCS9N40aNcLMzAx/f/9k4+aSynh4eFCoUCEWLFig0/X5119/ERISovNpzJTExcXx6tWrNE3nkd5zR4wYgaIo+Pr68uLFC51j165dY+jQodja2tKjRw8A9PT0aNy4MVu3blWnlYHXXYXLli3Dw8NDp2svT548dOjQgXXr1hEQEKDOMZYSFxcX6tevT4MGDfD09NQ5ltQ6/Pb3xsyZM995fwULFqRChQqsWrVK53szPDycbdu20aRJkxRbnj+Ul5cX5ubmTJw4kfj4+GTH3/65kJCQwA8//MBXX32VaqL/IdL6fid9Pad0zwULFsTDw4Nly5bpdAe//az09fVp1KgRW7du1elOvHv3LqtWraJGjRrJugUXLlyo81zmz5/Pq1ev1J+rSSpUqICJiQl6enosWrSIiIgIxo0bpx7/0OecE0hLmPikmjdvzrhx4+jSpQvVq1fn/PnzrFy5UmcAKLzu5li+fDkDBw7k+PHj1KxZk2fPnrF792569er1wR9/T2JlZUWNGjXo0qULd+/eZebMmTg5OdGtWzcA9YdDkyZNKF26NF26dKFIkSLcvHmTvXv3Ym5uzu+//86zZ8+YO3cuP//8My4uLjrz3CQlb+fOnePIkSNUq1YNR0dHxo8fj5+fHxEREbRu3RozMzOuXbvG5s2b6d69O4MHD2b37t2MHDmSc+fO8fvvv7/zXmrXrk2PHj3w9/cnODiYRo0akTdvXsLCwli/fj2zZs2ibdu26XpOO3fupGHDhu/8a7Rjx46sW7eO//3vf+zduxdPT08SEhK4dOkS69atIzAw8L0thG+ysbFh6tSpfPvtt3z99dc0bdr0g55Hs2bNmD59Oo0bN+arr77i3r17zJ07FycnJ50uOScnJ4YPH86PP/5IzZo1+eKLL9BqtZw4cYLChQvj7++Pubk5M2bM4Ntvv6VSpUp89dVX5MuXj7Nnz/L8+XOWLVtG3rx5mTx5Ml26dKF27dp06NBBnaLC3t4+Wdfbs2fPdLqYVqxYwcuXL/n888/f+2zSe26tWrX46aefGDhwIGXLlsXX1xdbW1suXbrEr7/+SmJiIn/++afOGMdx48axY8cOatSoQa9evdBqtfz6669ER0czbdq0ZNfo1KkTP//8M3v37mXy5MnvvZeUmJubU6tWLaZMmUJ8fDxFihRh586dOolgaqZMmULjxo2pWrUqPXr04NWrV8yZMwdDQ8MUJyX9+++/1SQiqaXt/Pnz7NixQy3z9OlT9PT02L9/P7Vr18bc3Jz58+fTsWNHKlSoQPv27SlYsCDXr1/njz/+wNPTU+cPxhs3bmBgYJDiwPS0SOv7ff/+fTXu27dvM3nyZCwsLKhbty6hoaEpPqtGjRpRrVo1vv32W3WKiref1fjx49m1a5f6NZAnTx5++eUXYmNjmTJlSrJ64+LiqF+/Pt7e3ly+fJl58+ZRo0YNWrZsmeo9lilThmHDhjFp0iTat29P2bJlP/g55wiZ8plMkeMkfVT5xIkT7yz38uVLZdCgQYqtra1iZGSkeHp6KkeOHNGZriDJ8+fPleHDhyvFixdX8ubNq9jY2Cht27ZVPzadnikqVq9erfj5+SmFChVSjIyMlGbNmin//vtvsvPPnDmjfPHFF0r+/PkVrVarFCtWTPH29lb27Nmjc+33bW9+VF9RFGXjxo1KjRo1FBMTE8XExEQpWbKk0rt3b+Xy5cuKoihK3759lVq1aik7duxIFlNKUzIoyuuPr1esWFExMjJSzMzMFDc3N2Xo0KHKrVu31DIfOkWFRqNRTp06pbM/pfcoLi5OmTx5slK6dGlFq9Uq+fLlUypWrKiMHTtWiY6OTna999WnKIpSr149pWjRosqTJ08++HksXrxYcXZ2VrRarVKyZEll6dKlqT63JUuWKO7u7mrctWvXVnbt2qVTZtu2bUr16tUVIyMjxdzcXKlcubKyevVqnTJr165V67GyslJ8fHzUKVmSdO7cWefrwtTUVKlQoYKyYsWKdz6j/3pukgMHDiitWrVSChQooOTNm1cpWrSo0q1bNyUiIiLF8qdPn1a8vLwUExMTxdjYWKlTp06yqUjeVLp0aUVPTy/ZfacmpSkqbty4oXz++eeKpaWlYmFhoXz55ZfKrVu3kk2Z8vYUFYqiKLt371aqV6+uGBoaKmZmZkrTpk2Vc+fO6Vwz6evgQ7a3p4rYu3ev4uXlpVhYWCiGhoaKo6Oj4uvrq5w8eVItk/R+vT01SEpxpySt73exYsV0yhUoUEBp1KiRcvToUTVW3piiIsmePXsUT09P9Wu6WbNmyvnz55PFkfQ1YGpqqhgbGyt169ZVDh8+nOI97d+/X+nevbuSL18+xdTUVPHx8VEePnyYLN63fx6+fPlSKVmypFKpUiXl1atX6v60POecQpYtErnCvn37qFu3LuvXr09369CbIiIiKF68ONeuXUt18sAxY8YQERHxQQNyhciO3N3dsbKyYs+ePZkdSobZt28fvr6+753hPjdLbbk6kXYyJkwIIUS6nTx5kuDgYDp16pTZoQiR7ciYMCHSwdTUFB8fn3cOFC9btqy6DJMQOc2FCxc4deoU06ZNw9bWNtVP0WZXVlZW1K5dO7PDEDmcJGFCpEOBAgXUgbOp+eKLLz5RNEJ8ehs2bGDcuHGUKFGC1atXv3fViOymbNmyLFu2LLPDEDmcjAkTQgghhMgEMiZMCCGEECITSBImhBBCCJEJZExYFpaYmMitW7cwMzNL97IwQgghhPi0FEXhyZMnFC5cWGct1bdJEpaF3bp1K02LIAshhBAi64mMjOSzzz5L9bgkYVmYmZkZ8PpNfHutLiGEEEJkTTExMdjZ2am/x1MjSVgajBkzhi1bthAcHPxJr5vUBdl8yh/oa40+6bWFEEKInOzU1I8/wfD7hhLl+oH5LVq0oHHjxikeO3jwIBqNhi+++CJHLcchhBBCiMyX65Owrl27smvXLm7cuJHs2NKlS/Hw8KBs2bLkz58/E6ITQgghRE6V65Ow5s2bU7BgwWSLLD99+pT169fTtWtXxowZQ/ny5QHYuXMnhoaGPH78WKd8//79qVevnvp648aNlC5dGq1Wi729PdOmTfvIdyKEEEKI7CTXJ2F58uShU6dOBAQE8ObiAevXrychIYEOHTrolK9fvz6WlpZs3LhR3ZeQkMDatWvx8fEB4NSpU3h7e9O+fXvOnz/PmDFjGDlyZLJE722xsbHExMTobEIIIYTImXJ9EgbwzTffEB4ezv79+9V9S5cupU2bNlhYWOiU1dfXp3379qxatUrdt2fPHh4/fkybNm0AmD59OvXr12fkyJG4uLjg6+tLnz59mDp16jvj8Pf3x8LCQt1kegohhBAi55IkDChZsiTVq1dnyZIlAFy5coWDBw/StWvXFMv7+Piwb98+bt26BcDKlStp1qwZlpaWAISEhODp6alzjqenJ2FhYSQkJKQah5+fH9HR0eoWGRmZAXcnhBBCiKxIkrD/r2vXrmzcuJEnT56wdOlSHB0dqV27doplK1WqhKOjI2vWrOHFixds3rxZ7Yr8L7RaLebm5jqbEEIIIXImScL+P29vb/T09Fi1ahXLly/nm2++eef8Hj4+PqxcuZLff/8dPT09mjVrph5zdXUlKChIp3xQUBAuLi7o6+t/tHsQQgghRPYhSdj/Z2pqSrt27fDz8+P27dv4+vq+s7yPjw+nT59mwoQJtG3bFq1Wqx4bNGgQe/bs4ccffyQ0NJRly5YxZ84cBg8e/JHvQgghhBDZhSRhb+jatSuPHj3Cy8uLwoULv7Osk5MTlStX5ty5c8m6IitUqMC6detYs2YNZcqUYdSoUYwbN+69iZ0QQgghcg+N8ua8DCJLiYmJwcLCgujoaBkfJoQQQmQTaf39LS1hQgghhBCZQJIwIYQQQohMkCezAxDvV2vEavS1RpkdhhBCCPGfnZraKbNDyDIytSXs/v379OzZk6JFi6LVarGxscHLyyvZ9A5CCCGEEDlNpraEtWnThri4OJYtW4aDgwN3795lz549PHz4MDPDEkIIIYT46DKtJezx48ccPHiQyZMnU7duXYoVK0blypXx8/OjZcuWwOs1GN3c3DAxMcHOzo5evXrx9OlTtY6AgAAsLS3Zvn07JUqUwNjYmLZt2/L8+XOWLVuGvb09+fLlo1+/fjrLBc2bNw9nZ2cMDQ2xtrambdu26jF7e3tmzpypE2v58uUZM2aM+lqj0bBo0SI+//xzjI2NcXZ2Ztu2bTrnbNu2Tb1G3bp1WbZsGRqNhsePH2fcQxRCCCFEtpVpSZipqSmmpqZs2bKF2NjYFMvo6enx888/888//7Bs2TL+/vtvhg4dqlPm+fPn/Pzzz6xZs4YdO3awb98+Pv/8c/7880/+/PNPVqxYwS+//MKGDRsAOHnyJP369WPcuHFcvnyZHTt2UKtWrQ+Of+zYsXh7e3Pu3DmaNm2Kj48PUVFRAFy7do22bdvSunVrzp49S48ePRg+fPh764yNjSUmJkZnE0IIIUTOlGlJWJ48eQgICGDZsmVYWlri6enJDz/8wLlz59QyAwYMoG7dutjb21OvXj3Gjx/PunXrdOqJj49n/vz5uLu7U6tWLdq2bcuhQ4dYvHgxpUqVonnz5tStW5e9e/cCcP36dUxMTGjevDnFihXD3d2dfv36fXD8vr6+dOjQAScnJyZOnMjTp085fvw4AL/88gslSpRg6tSplChRgvbt26dpolZ/f38sLCzUzc7O7oPjEkIIIUT2kKkD89u0acOtW7fYtm0bjRs3Zt++fVSoUIGAgAAAdu/eTf369SlSpAhmZmZ07NiRhw8f8vz5c7UOY2NjHB0d1dfW1tbY29tjamqqs+/evXsANGzYkGLFiuHg4EDHjh1ZuXKlTn1pVbZsWfX/JiYmmJubq9e4fPkylSpV0ilfuXLl99bp5+dHdHS0ukVGRn5wXEIIIYTIHjJ9njBDQ0MaNmzIyJEjOXz4ML6+vowePZqIiAiaN29O2bJl2bhxI6dOnWLu3LkAxMXFqefnzZtXpz6NRpPivsTERADMzMw4ffo0q1evxtbWllGjRlGuXDl1rJaenh5vLyIQHx+fLO53XSO9tFot5ubmOpsQQgghcqZMT8LeVqpUKZ49e8apU6dITExk2rRpVK1aFRcXF27dupUh18iTJw8NGjRgypQpnDt3joiICP7++28AChYsyO3bt9WyMTExXLt27YPqL1GiBCdPntTZd+LEif8euBBCCCFyjExLwh4+fEi9evX47bffOHfuHNeuXWP9+vVMmTKFVq1a4eTkRHx8PLNnz+bq1ausWLGCBQsW/Ofrbt++nZ9//png4GD+/fdfli9fTmJiIiVKlACgXr16rFixgoMHD3L+/Hk6d+6Mvr7+B12jR48eXLp0iWHDhhEaGsq6devULlaNRvOf70EIIYQQ2V+mfjqySpUqzJgxg1q1alGmTBlGjhxJt27dmDNnDuXKlWP69OlMnjyZMmXKsHLlSvz9/f/zdS0tLdm0aRP16tXD1dWVBQsWsHr1akqXLg28HpdVu3ZtmjdvTrNmzWjdurXOmLO0KF68OBs2bGDTpk2ULVuW+fPnq5+O1Gq1//kehBBCCJH9aZS3B0CJj2LChAksWLDggwbbp3UVdiGEEEJkHWn9/S1rR34k8+bNo1KlSuTPn5+goCCmTp1Knz59MjssIYQQQmQRkoR9JGFhYYwfP56oqCiKFi3KoEGD8PPzy+ywhBBCCJFFSHdkFpbUnFmu7wL0tUaZHY4QQgiRqlNTO2V2CFlGWrsjs9wUFZnN19eX1q1bZ3YYQgghhMjhslUS5uvri0ajUSdkLV68OEOHDuXly5eZHZoQQgghxAfJdmPCGjduzNKlS4mPj+fUqVN07twZjUbD5MmTMzs0IYQQQog0y1YtYfB6ni0bGxvs7Oxo3bo1DRo0YNeuXQAkJibi7+9P8eLFMTIyoly5cmzYsEE9NyEhga5du6rHS5QowaxZs955vTp16tC3b18GDBhAvnz5sLa25tdff+XZs2d06dIFMzMznJyc+Ouvv3TOu3DhAk2aNMHU1BRra2s6duzIgwcPMv6BCCGEECJbynZJ2JsuXLjA4cOHMTAwAMDf35/ly5ezYMEC/vnnH7777ju+/vpr9u/fD7xO0j777DPWr1/PxYsXGTVqFD/88APr1q1753WWLVtGgQIFOH78OH379qVnz558+eWXVK9endOnT9OoUSM6duyoLgT++PFj6tWrh7u7OydPnmTHjh3cvXsXb2/vd14nNjaWmJgYnU0IIYQQOVO2+nSkr68vv/32G4aGhrx69YrY2Fj09PRYt24dzZs3x8rKit27d1OtWjX1nG+//Zbnz5+zatWqFOvs06cPd+7cUVvMfH19efz4MVu2bAFet4QlJCRw8OBB4HVrmoWFBV988QXLly8H4M6dO9ja2nLkyBGqVq3K+PHjOXjwIIGBgep1bty4gZ2dHZcvX8bFxSXFWMaMGcPYsWOT7ZdPRwohhMjq5NOR/yfHTtZat25d5s+fz7Nnz5gxYwZ58uShTZs2/PPPPzx//pyGDRvqlI+Li8Pd3V19PXfuXJYsWcL169d58eIFcXFxlC9f/p3XLFu2rPp/fX198ufPj5ubm7rP2toagHv37gFw9uxZ9u7di6mpabK6wsPDU03C/Pz8GDhwoPo6JiYGOzu7d8YmhBBCiOwp2yVhJiYmODk5AbBkyRLKlSvH4sWLKVOmDAB//PEHRYoU0Tknab3GNWvWMHjwYKZNm0a1atUwMzNj6tSpHDt27J3XzJs3r87rpE9nvvkaXnd3Ajx9+pQWLVqk+GEBW1vbVK+j1WplbUkhhBAil8h2Sdib9PT0+OGHHxg4cCChoaFotVquX79O7dq1UywfFBRE9erV6dWrl7ovPDw8w+OqUKECGzduxN7enjx5svUjFkIIIcRHkq0H5gN8+eWX6Ovr88svvzB48GC+++47li1bRnh4OKdPn2b27NksW7YMAGdnZ06ePElgYCChoaGMHDmSEydOZHhMvXv3Jioqig4dOnDixAnCw8MJDAykS5cuJCQkZPj1hBBCCJH9ZPtmmjx58tCnTx+mTJnCtWvXKFiwIP7+/ly9ehVLS0sqVKjADz/8AECPHj04c+YM7dq1Q6PR0KFDB3r16pVseon/qnDhwgQFBTFs2DAaNWpEbGwsxYoVo3HjxujpfXjee2B8h3cO7BNCCCFE9pOtPh2Z26T10xVCCCGEyDpk7UghhBBCiCws23dH5ga1RqyWecKEENmOzBslxLtJS1gG2LdvHxqNhsePH2d2KEIIIYTIJrJMEubr64tGo+F///tfsmO9e/dGo9Hg6+ubprokKRJCCCFEVpdlkjAAOzs71qxZw4sXL9R9L1++ZNWqVRQtWvSTx6MoCq9evfrk1xVCCCFEzpelkrAKFSpgZ2fHpk2b1H2bNm2iaNGiOksPxcbG0q9fPwoVKoShoSE1atRQ5/uKiIigbt26AOTLl0+nBe1d58H/taD99ddfVKxYEa1Wy6FDh9573tsePnxIhw4dKFKkCMbGxri5ubF69eqMfFRCCCGEyOayVBIG8M0337B06VL19ZIlS+jSpYtOmaFDh7Jx40aWLVvG6dOncXJywsvLi6ioKOzs7Ni4cSMAly9f5vbt28yaNeu9573p+++/Z9KkSYSEhFC2bNk0n5fk5cuXVKxYkT/++IMLFy7QvXt3OnbsyPHjx99577GxscTExOhsQgghhMiZslwS9vXXX3Po0CH+/fdf/v33X4KCgvj666/V48+ePWP+/PlMnTqVJk2aUKpUKX799VeMjIxYvHgx+vr6WFlZAVCoUCFsbGywsLB473lvGjduHA0bNsTR0RGtVpvm85IUKVKEwYMHU758eRwcHOjbty+NGzdm3bp177x3f39/LCws1E0W7xZCCCFyriw3RUXBggVp1qwZAQEBKIpCs2bNKFCggHo8PDyc+Ph4PD091X158+alcuXKhISEpFrvh5zn4eHxn66XkJDAxIkTWbduHTdv3iQuLo7Y2FiMjY3fee9+fn4MHDhQfR0TEyOJmBBCCJFDZbkkDF53Sfbp0weAuXPnfvLrm5iY/Kfzp06dyqxZs5g5cyZubm6YmJgwYMAA4uLi3nmeVqtFq9X+p2sLIYQQInvIct2RAI0bNyYuLo74+Hi8vLx0jjk6OmJgYEBQUJC6Lz4+nhMnTlCqVCkADAwMAHQWy07LeSlJz3lBQUG0atWKr7/+mnLlyuHg4EBoaOgHPAEhhBBC5HRZsiVMX19f7erT19fXOWZiYkLPnj0ZMmQIVlZWFC1alClTpvD8+XO6du0KQLFixdBoNGzfvp2mTZtiZGSEqanpe89LSVqu9zZnZ2c2bNjA4cOHyZcvH9OnT+fu3bvvTPaEEEIIkbtkySQMeOeCl5MmTSIxMZGOHTvy5MkTPDw8CAwMJF++fMDrgfFjx47l+++/p0uXLnTq1ImAgID3npfe671txIgRXL16FS8vL4yNjenevTutW7cmOjo6/Q9ECCGEEDmKRlEUJbODEClL6yrsQgghhMg60vr7O0uOCRNCCCGEyOmybHek+D+1RqxGX2uU2WEIkWudmtops0MQQuRAObolLCst5F2nTh0GDBiQ2WEIIYQQIovIti1hCQkJ1KxZExsbG521JqOjoylTpgydOnVi9OjR3L59GwsLi0yM9LVNmzaRN2/ezA5DCCGEEFlEtm0J09fXJyAggB07drBy5Up1f9++fbGysmL06NEYGBhgY2ODRqPJxEhfs7KywszMLLPDEEIIIUQWkW2TMAAXFxcmTZpE3759uX37Nlu3bmXNmjUsX74cAwODZN2RDx8+pEOHDhQpUgRjY2Pc3NxYvXq1Tp2xsbH069ePQoUKYWhoSI0aNThx4oR6PKnOwMBA3N3dMTIyol69ety7d4+//voLV1dXzM3N+eqrr3j+/Ll6nnRHCiGEEOJN2ToJg9ctX+XKlaNjx450796dUaNGUa5cuRTLvnz5kooVK/LHH39w4cIFunfvTseOHTl+/LhaZujQoWzcuJFly5Zx+vRpnJyc8PLyIioqSqeuMWPGMGfOHA4fPkxkZCTe3t7MnDmTVatW8ccff7Bz505mz579QfcSGxtLTEyMziaEEEKInCnbJ2EajYb58+ezZ88erK2t+f7771MtW6RIEQYPHkz58uVxcHCgb9++NG7cmHXr1gHw7Nkz5s+fz9SpU2nSpAmlSpXi119/xcjIiMWLF+vUNX78eDw9PXF3d6dr167s37+f+fPn4+7uTs2aNWnbti179+79oHvx9/fHwsJC3WTxbiGEECLnyvZJGMCSJUswNjbm2rVr3LhxI9VyCQkJ/Pjjj7i5uWFlZYWpqSmBgYFcv34dgPDwcOLj4/H09FTPyZs3L5UrV1aXUUpStmxZ9f/W1tYYGxvj4OCgs+/evXsfdB9+fn5ER0erW2Rk5AedL4QQQojsI9snYYcPH2bGjBls376dypUr07VrV1JbBGDq1KnMmjWLYcOGsXfvXoKDg/Hy8iIuLu6Dr/vmJx01Gk2yTz5qNBoSExM/qE6tVou5ubnOJoQQQoicKVsnYc+fP8fX15eePXtSt25dFi9ezPHjx1mwYEGK5YOCgmjVqhVff/015cqVw8HBgdDQUPW4o6MjBgYGBAUFqfvi4+M5ceKELL4thBBCiAyVrZMwPz8/FEVh0qRJANjb2/PTTz8xdOhQIiIikpV3dnZm165dHD58mJCQEHr06MHdu3fV4yYmJvTs2ZMhQ4awY8cOLl68SLdu3Xj+/Dldu3b9VLclhBBCiFwg2yZh+/fvZ+7cuSxduhRjY2N1f48ePahevXqK3ZIjRoygQoUKeHl5UadOHWxsbGjdurVOmUmTJtGmTRs6duxIhQoVuHLlCoGBgeTLl+9T3JYQQgghcgmNktoAKpHp0roKuxBCCCGyjrT+/s62LWFCCCGEENmZJGFCCCGEEJkg2y7gnZvUGrEafa1RZochRJZ1amqnzA5BCCE+WI5sCfP19U024B5ItpakEEIIIURmyZFJWFaWnolhhRBCCJHz5OokbOPGjZQuXRqtVou9vT3Tpk3TOW5vb8/EiRP55ptvMDMzo2jRoixcuFCnzPnz56lXrx5GRkbkz5+f7t278/TpU/V4UqvchAkTKFy4MCVKlPgk9yaEEEKIrC3XJmGnTp3C29ub9u3bc/78ecaMGcPIkSMJCAjQKTdt2jQ8PDw4c+YMvXr1omfPnly+fBl4veC3l5cX+fLl48SJE6xfv57du3fTp08fnTr27NnD5cuX2bVrF9u3b081ptjYWGJiYnQ2IYQQQuRMOXZg/vbt2zE1NdXZl5CQoP5/+vTp1K9fn5EjRwLg4uLCxYsXmTp1Kr6+vmq5pk2b0qtXLwCGDRvGjBkz2Lt3LyVKlGDVqlW8fPmS5cuXY2JiAsCcOXNo0aIFkydPxtraGng9E/+iRYswMDB4Z8z+/v6MHTv2P9+7EEIIIbK+HNsSVrduXYKDg3W2RYsWqcdDQkLw9PTUOcfT05OwsDCdZK1s2bLq/zUaDTY2Nty7d0+to1y5cmoCllRHYmKi2loG4Obm9t4EDF4vwxQdHa1ukZGRH37jQgghhMgWcmxLmImJCU5OTjr7bty48cH15M2bV+e1RqMhMTHxg2NJC61Wi1ar/aC6hRBCCJE95diWsPdxdXUlKChIZ19QUBAuLi7o6+unuY6zZ8/y7NkznTr09PRkAL4QQggh3inXJmGDBg1iz549/Pjjj4SGhrJs2TLmzJnD4MGD01yHj48PhoaGdO7cmQsXLrB371769u1Lx44d1fFgQgghhBApybVJWIUKFVi3bh1r1qyhTJkyjBo1inHjxukMyn8fY2NjAgMDiYqKolKlSrRt25b69eszZ86cjxe4EEIIIXIEjaIoSmYHIVKW1lXYhRBCCJF1pPX3d65tCRNCCCGEyEyShAkhhBBCZIIcO0VFRtu3bx9169bl0aNHWFpaftJr1xqxGn2t0Se9phCZ7dTUTpkdghBCfFRZviUsMjKSb775hsKFC2NgYECxYsXo378/Dx8+zNDrjBkzBo1Gg0ajIU+ePNjb2/Pdd9/prAMphBBCCJFRsnQSdvXqVTw8PAgLC2P16tVcuXKFBQsWsGfPHqpVq0ZUVFSGXq906dLcvn2biIgIJk+ezMKFCxk0aFCGXkMIIYQQArJ4Eta7d28MDAzYuXMntWvXpmjRojRp0oTdu3dz8+ZNhg8fDoC9vT0TJ07km2++wczMjKJFi7Jw4UKduiIjI/H29sbS0hIrKytatWpFRESETpk8efJgY2PDZ599Rrt27fDx8WHbtm0pxjZmzBjKly+vs2/mzJnY29urr/ft20flypUxMTHB0tIST09P/v333//8XIQQQgiR/WXZJCwqKorAwEB69eqFkZHueCgbGxt8fHxYu3YtSTNsTJs2DQ8PD86cOUOvXr3o2bOnun5jfHw8Xl5emJmZcfDgQYKCgjA1NaVx48bExcWlGoORkdE7j7/Lq1evaN26NbVr1+bcuXMcOXKE7t27o9Fo0lWfEEIIIXKWLDswPywsDEVRcHV1TfG4q6srjx494v79+wA0bdqUXr16ATBs2DBmzJjB3r17KVGiBGvXriUxMZFFixapSdDSpUuxtLRk3759NGrUKFn9p06dYtWqVdSrVy9d8cfExBAdHU3z5s1xdHRUY36X2NhYYmNjdeoQQgghRM6UZVvCkqR1LtmyZcuq/9doNNjY2HDv3j0Azp49y5UrVzAzM8PU1BRTU1OsrKx4+fIl4eHh6nnnz5/H1NQUIyMjKleuTLVq1dI9+72VlRW+vr54eXnRokULZs2axe3bt995jr+/PxYWFupmZ2eXrmsLIYQQIuvLskmYk5MTGo2GkJCQFI+HhISQL18+ChYsCEDevHl1jms0GhITEwF4+vQpFStWJDg4WGcLDQ3lq6++Us8pUaIEwcHBhISE8OLFC7Zt25bqGpB6enrJEsT4+Hid10uXLuXIkSNUr16dtWvX4uLiwtGjR1O9Zz8/P6Kjo9UtMjIy1bJCCCGEyN6ybHdk/vz5adiwIfPmzeO7777TGRd2584dVq5cSadOndI0xqpChQqsXbuWQoUKvXP5AAMDA5ycnNIUX8GCBblz5w6KoqgxBAcHJyvn7u6Ou7s7fn5+VKtWjVWrVlG1atUU69RqtWi12jRdXwghhBDZW5ZtCQOYM2cOsbGxeHl5ceDAASIjI9mxYwcNGzakSJEiTJgwIU31+Pj4UKBAAVq1asXBgwe5du0a+/bto1+/fty4cSNdsdWpU4f79+8zZcoUwsPDmTt3Ln/99Zd6/Nq1a/j5+XHkyBH+/fdfdu7cSVhY2HvHhQkhhBAid8jSSZizszMnT57EwcEBb29vHB0d6d69O3Xr1uXIkSNYWVmlqR5jY2MOHDhA0aJF+eKLL3B1daVr1668fPky3Qtju7q6Mm/ePObOnUu5cuU4fvw4gwcP1rnmpUuXaNOmDS4uLnTv3p3evXvTo0ePdF1PCCGEEDmLRknryHfxyaV1FXYhhBBCZB1p/f2dpVvChBBCCCFyKknChBBCCCEyQZb9dKT4P7VGrEZfa/T+gkJkUaemdsrsEIQQIsuRljAhhBBCiEyQq5MwX19fNBoNGo1GnSNs3LhxvHr1KrNDE0IIIUQOl+u7Ixs3bszSpUuJjY3lzz//pHfv3uTNmxc/P7/MDk0IIYQQOViubgmD17PU29jYUKxYMXr27EmDBg3Ytm0bjx49olOnTuTLlw9jY2OaNGlCWFiYzrlBQUHUqVMHY2Nj8uXLh5eXF48ePQJeL8bdr18/ChUqhKGhITVq1ODEiROZcYtCCCGEyIJyfRL2NiMjI+Li4vD19eXkyZNs27aNI0eOoCgKTZs2VdeHDA4Opn79+pQqVYojR45w6NAhWrRoQUJCAgBDhw5l48aNLFu2jNOnT+Pk5ISXlxdRUVGpXjs2NpaYmBidTQghhBA5kyRh/5+iKOzevZvAwECKFi3Ktm3bWLRoETVr1qRcuXKsXLmSmzdvsmXLFgCmTJmCh4cH8+bNo1y5cpQuXZo+ffpQoEABnj17xvz585k6dSpNmjShVKlS/PrrrxgZGbF48eJUY/D398fCwkLd7OzsPtHdCyGEEOJTy/VJ2Pbt2zE1NcXQ0JAmTZrQrl07fH19yZMnD1WqVFHL5c+fnxIlShASEgL8X0tYSsLDw4mPj8fT01PdlzdvXipXrqyenxI/Pz+io6PVLTIyMoPuUgghhBBZTa4fmF+3bl3mz5+PgYEBhQsXJk+ePGzbtu295xkZZfy8XVqtFq1Wm+H1CiGEECLryfUtYSYmJjg5OVG0aFHy5Hmdk7q6uvLq1SuOHTumlnv48CGXL1+mVKlSAJQtW5Y9e/akWKejoyMGBgYEBQWp++Lj4zlx4oR6vhBCCCFyt1yfhKXE2dmZVq1a0a1bNw4dOsTZs2f5+uuvKVKkCK1atQJedx2eOHGCXr16ce7cOS5dusT8+fN58OABJiYm9OzZkyFDhrBjxw4uXrxIt27deP78OV27ds3kuxNCCCFEVpDruyNTs3TpUvr370/z5s2Ji4ujVq1a/Pnnn+TNmxcAFxcXdu7cyQ8//EDlypUxMjKiSpUqdOjQAYBJkyaRmJhIx44defLkCR4eHgQGBpIvX74PjuXA+A7vXIVdCCGEENmPRlEUJbODECmLiYnBwsKC6OhoScKEEEKIbCKtv7+lO1IIIYQQIhNId2Q2UGvEavS1Gf9pTCFScmpqp8wOQQghcgVpCftEIiIi0Gg0BAcHZ3YoQgghhMgCsl0S5uvrS+vWrZPt37dvHxqNhsePH3/ymNLCzs6O27dvU6ZMmcwORQghhBBZgHRHfiL6+vrY2NhkdhhCCCGEyCKyXUtYWowZM4by5cvr7Js5cyb29vbq6xMnTtCwYUMKFCiAhYUFtWvX5vTp0+rxwYMH07x5c53zNRoNO3bsUPc5OTmxaNEi9fWiRYtwdXXF0NCQkiVLMm/ePPWYdEcKIYQQ4k05MglLiydPntC5c2cOHTrE0aNHcXZ2pmnTpjx58gSA2rVrc+jQIRISEgDYv38/BQoUYN++fQDcvHmT8PBw6tSpA8DKlSsZNWoUEyZMICQkhIkTJzJy5EiWLVuW5phiY2OJiYnR2YQQQgiRM2XL7sikRbfflJQspVW9evV0Xi9cuBBLS0v2799P8+bNqVmzJk+ePOHMmTNUrFiRAwcOMGTIELZs2QK8HoNWpEgRnJycABg9ejTTpk3jiy++AKB48eJcvHiRX375hc6dO6cpJn9/f8aOHftB9yGEEEKI7ClbtoTVrVuX4OBgne3NbsG0uHv3Lt26dcPZ2RkLCwvMzc15+vQp169fB8DS0pJy5cqxb98+zp8/j4GBAd27d+fMmTM8ffqU/fv3U7t2bQCePXtGeHg4Xbt2xdTUVN3Gjx9PeHh4mmPy8/MjOjpa3SIjIz/onoQQQgiRfWTLlrCkRbffdOPGDfX/enp6vL0QQHx8vM7rzp078/DhQ2bNmkWxYsXQarVUq1aNuLg4tUydOnXYt28fWq2W2rVrY2VlhaurK4cOHWL//v0MGjQIgKdPnwLw66+/UqVKFZ3r6Ovrp/m+tFotWq02zeWFEEIIkX1lyyTsfQoWLMidO3dQFAWNRgOQbEB8UFAQ8+bNo2nTpgBERkby4MEDnTK1a9dmyZIl5MmTh8aNGwOvE7PVq1cTGhqqjgeztramcOHCXL16FR8fn497c0IIIYTIEXJkElanTh3u37/PlClTaNu2LTt27OCvv/7SWb/J2dmZFStW4OHhQUxMDEOGDMHISHdW+lq1avHkyRO2b9/OpEmT1Lrbtm2Lra0tLi4uatmxY8fSr18/LCwsaNy4MbGxsZw8eZJHjx4xcODAT3PjQgghhMg2suWYsPdxdXVl3rx5zJ07l3LlynH8+HEGDx6sU2bx4sU8evSIChUq0LFjR/r160ehQoV0yuTLlw83NzcKFixIyZIlgdeJWWJiojoeLMm3337LokWLWLp0KW5ubtSuXZuAgACKFy/+cW9WCCGEENmSRnl78JTIMtK6CrsQQgghso60/v7OkS1hQgghhBBZXY4cE5bT1BqxGn2t0fsLihzj1NROmR2CEEKIj0xawoQQQgghMkGuSsLq1KnDgAEDMjsMIYQQQojclYRt2rSJH3/8UX39zz//4O3tTcGCBdFqtbi4uDBq1CieP3+e7NzDhw/TtGlT8uXLh6GhIW5ubkyfPj3F5ZK2b99O7dq1MTMzw9jYmEqVKhEQEPAxb00IIYQQ2UyuSsKsrKwwMzMD4OjRo1SpUoW4uDj++OMPQkNDmTBhAgEBATRs2FBn5vzNmzdTu3ZtPvvsM/bu3culS5fo378/48ePp3379jqz88+ePZtWrVrh6enJsWPHOHfuHO3bt+d///tfsmkyhBBCCJF75aopKurUqUP58uWZMWMGZcqUwdjYmGPHjqGn93+56NmzZ3F3d8ff359hw4bx7NkzihUrRu3atdm4caNOfb///jstW7ZkzZo1tGvXjsjISBwdHenbty/Tpk3TKTt79mz69eunJn8piY2NJTY2Vn0dExODnZ0d5foukIH5uYwMzBdCiOxLpqh4h+DgYC5evMjAgQN1EjCAcuXK0aBBA1avXg3Azp07efjwYYqtWC1atMDFxUUtu2HDBuLj41Ms26NHD0xNTdWyKfH398fCwkLd7Ozs/sttCiGEECILy5VJWGhoKPB6Zv2UuLq6qmXeV7ZkyZI6ZS0sLLC1tU1WzsDAAAcHB7VsSvz8/IiOjla3yMjItN+UEEIIIbKVXD1P2Lt6Yg0MDNJcNqNotVq0Wu1Hv44QQgghMl+ubAlzdnYGICQkJMXjISEh6uLcSf+mtWx0dDS3bt1KVi4uLo7w8HCdRb+FEEIIkXvlyiTM3d2dkiVLMmPGDBITE3WOnT17lt27d+Pr6wtAo0aNsLKySjbQHmDbtm2EhYXRoUMHANq0aUPevHlTLLtgwQKePXumlhVCCCFE7pYrkzCNRsOiRYu4ePEibdq04fjx41y/fp3169fTokULvLy86NGjBwAmJib88ssvbN26le7du3Pu3DkiIiJYvHgxvr6+tG3bFm9vbwCKFi3KlClTmDlzJsOHD+fSpUuEh4czffp0hg4dyqBBg1L9ZKQQQgghcpdcOUXFzJkzATh//jxjx45l7969REVFAdCnTx9mzJhBnjy6w+UOHjzIhAkTOHLkCC9fvsTZ2ZkuXbowYMAA9PX1dcpu27aNn376idOnT5OQkEDp0qXp3bs3Xbp0+aB40/oRVyGEEEJkHWn9/Z2rkrB3SUxMpGvXrgQGBrJ//3513FhmkiRMCCGEyH5knrAPpKenx+LFixk2bBgHDx7M7HCEEEIIkcNJS1gWlpRJy4z5qZOZ5YUQQmQ10hKWisjISL755hsKFy6MgYEBxYoVo3///jx8+DCzQxNCCCFELpKrkrCrV6/i4eFBWFgYq1ev5sqVKyxYsIA9e/ZQrVo1dXC+EEIIIcTHlquSsN69e2NgYMDOnTupXbs2RYsWpUmTJuzevZubN28yfPhwAOzt7fnxxx/p0KEDJiYmFClShLlz5+rUpdFomD9/Pk2aNMHIyAgHBwc2bNigU+b8+fPUq1cPIyMj8ufPT/fu3Xn69Oknu18hhBBCZF25JgmLiooiMDCQXr16YWSkO77KxsYGHx8f1q5dqy5PNHXqVMqVK8eZM2f4/vvv6d+/P7t27dI5b+TIkbRp04azZ8/i4+ND+/bt1Zn1nz17hpeXF/ny5ePEiROsX7+e3bt306dPn1RjjI2NJSYmRmcTQgghRM6Ua5KwsLAwFEV556Ldjx494v79+wB4enry/fff4+LiQt++fWnbti0zZszQOefLL7/k22+/xcXFhR9//BEPDw9mz54NwKpVq3j58iXLly+nTJky1KtXjzlz5rBixQru3r2bYgz+/v5YWFiom52dXQY+ASGEEEJkJbkmCUuS1g+DVqtWLdnrt9ePfFeZkJAQypUrh4mJiXrc09OTxMRELl++nOI1/fz8iI6OVrfIyMg0xSqEEEKI7CfXJGFOTk5oNJp3LsSdL18+ChYs+Ikj+z9arRZzc3OdTQghhBA5U65JwvLnz0/Dhg2ZN28eL1680Dl2584dVq5cSbt27dBoNAAcPXpUp8zRo0eTdWW+q4yrqytnz57l2bNn6vGgoCD09PQoUaJEht2XEEIIIbKnXJOEAcyZM4fY2Fi8vLw4cOAAkZGR7Nixg4YNG1KkSBEmTJiglg0KCmLKlCmEhoYyd+5c1q9fT//+/XXqW79+PUuWLCE0NJTRo0dz/PhxdeC9j48PhoaGdO7cmQsXLrB371769u1Lx44dsba2/qT3LYQQQoisJ1clYc7Ozpw8eRIHBwe8vb1xdHSke/fu1K1blyNHjmBlZaWWHTRoECdPnsTd3Z3x48czffp0vLy8dOobO3Ysa9asoWzZsixfvpzVq1dTqlQpAIyNjQkMDCQqKopKlSrRtm1b6tevz5w5cz7pPQshhBAia0rXskWjR4/mm2++oVixYh8jpkxnb2/PgAEDGDBgQKplNBoNmzdvpnXr1h8tDlnAWwghhMh+PuqyRVu3bsXR0ZH69euzatUqYmNj0x2oEEIIIURulK4kLDg4mBMnTlC6dGn69++PjY0NPXv25MSJExkdnxBCCCFEjpSu7sg3xcfH8/vvv7N06VICAwMpWbIkXbt2xdfXFwsLi4yKM1dKas4s13cB+lqj95+QC5ya2imzQxBCCCHe6aN2R75JURTi4+OJi4tDURTy5cvHnDlzsLOzY+3atf+1eiGEEEKIHCndSdipU6fo06cPtra2fPfdd7i7uxMSEsL+/fsJCwtjwoQJ9OvXLyNj/U8iIyP55ptvKFy4MAYGBhQrVoz+/fvz8OFDtUydOnXQaDRoNBoMDQ0pVaoU8+bNU48HBASox/X09Pjss8/o0qUL9+7d07nW9u3bqV27NmZmZhgbG1OpUiUCAgI+1a0KIYQQIhtIVxLm5uZG1apVuXbtGosXLyYyMpJJkybh5OSklunQoYO6DmNmu3r1Kh4eHoSFhbF69WquXLnCggUL2LNnD9WqVSMqKkot261bN27fvs3Fixfx9vamd+/erF69Wj1ubm7O7du3uXHjBr/++it//fUXHTt2VI/Pnj2bVq1a4enpybFjxzh37hzt27fnf//7H4MHD/6k9y2EEEKIrCtPek7y9vbmm2++oUiRIqmWKVCgAImJiekOLCP17t0bAwMDdu7ciZHR67FVRYsWxd3dHUdHR4YPH878+fOB1/N72djYADBmzBhWrVrFtm3b6NChA/B6aoqk44ULF6Zfv36MHDmSFy9e8ODBAwYNGsSAAQOYOHGiev1BgwZhYGBAv379+PLLL6lSpcqnvH0hhBBCZEHpagkbOXLkOxOwrCQqKorAwEB69eqlJmBJbGxs8PHxYe3ataku7G1kZERcXFyq9RsZGZGYmMirV6/YsGED8fHxKbZ49ejRA1NTU51WtbfFxsYSExOjswkhhBAiZ0pXS1hCQgIBAQHs2bOHe/fuJWvx+vvvvzMkuIwQFhaGoijJ1n1M4urqyqNHj5J1nSYkJLB69WrOnTtH9+7dU617wYIFeHh4YGZmRmhoKBYWFtja2iYra2BggIODA6GhoanG6u/vz9ixYz/g7oQQQgiRXaUrCevfvz8BAQE0a9aMMmXKqIteZ2VpnYlj3rx5LFq0iLi4OPT19fnuu+/o2bOnejw6OhpTU1MSExN5+fIlNWrUYNGiRRkSo5+fHwMHDlRfx8TEYGdnlyF1CyGEECJrSVcStmbNGtatW0fTpk0zOp4M5+TkhEajISQkhM8//zzZ8ZCQEPLly0fBggWB1wtvDx8+HCMjI2xtbdHT0+2xNTMz4/Tp0+jp6WFra6vTxeni4kJ0dDS3bt2icOHCOufFxcURHh5O3bp1U41Vq9Wi1Wr/y+0KIYQQIptI15gwAwMDnU9CZmX58+enYcOGzJs3jxcvXugcu3PnDitXrqRdu3Zqa56FhQVOTk4UKVIkWQIGoKenh5OTEw4ODsnGmLVp04a8efMybdq0ZOctWLCAZ8+eqQP8hRBCCJG7pSsJGzRoELNmzUpzF19mmzNnDrGxsXh5eXHgwAEiIyPZsWMHDRs2pEiRIkyYMCFDrlO0aFGmTJnCzJkzGT58OJcuXSI8PJzp06czdOhQBg0aJJ+MFEIIIQSQzu7IQ4cOsXfvXv766y9Kly5N3rx5dY5v2rQpQ4LLKM7Ozpw8eZLRo0fj7e1NVFQUNjY2tG7dmtGjR2NlZZVh1xowYAAODg789NNPzJo1i4SEBEqXLs38+fPp0qVLuuo8ML7DO5c9EEIIIUT2k661I9+XTCxdujTdAYn/k9a1p4QQQgiRdaT193e6WsIkyRJCCCGE+G/SlYSJT6vWiNXoa43eXzAbOTW1U2aHIIQQQmSqdCdhGzZsYN26dVy/fj3ZjPKnT5/+z4FlNxERERQvXpwzZ85Qvnz5zA5HCCGEEFlcuj4d+fPPP9OlSxesra05c+YMlStXJn/+/Fy9epUmTZpkdIzvdOfOHfr374+TkxOGhoZYW1vj6enJ/Pnzef78+SeNRQghhBAirdLVEjZv3jwWLlxIhw4dCAgIYOjQoTg4ODBq1CiioqIyOsZUXb16FU9PTywtLZk4cSJubm5otVrOnz/PwoULKVKkCC1btvxk8QghhBBCpFW6WsKuX79O9erVgdcLWD958gSAjh07vnOB6ozWq1cv8uTJw8mTJ/H29sbV1RUHBwdatWrFH3/8QYsWLdR4W7VqhampKebm5nh7e3P37l2duubPn4+joyMGBgaUKFGCFStW6By/dOkSNWrUwNDQkFKlSrF79240Gg1btmxJNb4LFy7QpEkTTE1Nsba2pmPHjjx48CDDn4MQQgghsp90JWE2NjZqi1fRokU5evQoANeuXftkE7g+fPiQnTt30rt3b0xMTFIso9FoSExMpFWrVkRFRbF//3527drF1atXadeunVpu8+bN9O/fn0GDBnHhwgV69OhBly5d2Lt3L/B6Me/WrVtjbGzMsWPHWLhwIcOHD39nfI8fP6ZevXq4u7tz8uRJduzYwd27d/H29k71nNjYWGJiYnQ2IYQQQuRM6eqOrFevHtu2bcPd3Z0uXbrw3XffsWHDBk6ePMkXX3yR0TGm6MqVKyiKQokSJXT2FyhQgJcvXwLQu3dvGjRowPnz57l27Zq6GPby5cspXbo0J06coFKlSvz000/4+vrSq1cvAAYOHMjRo0f56aefqFu3Lrt27SI8PJx9+/ZhY2MDwIQJE2jYsGGq8c2ZMwd3d3cmTpyo7luyZAl2dnaEhobi4uKS7Bx/f3/Gjh373x6MEEIIIbKFdCVhCxcuJDExEXid6OTPn5/Dhw/TsmVLevTokaEBfqjjx4+TmJiIj48PsbGxhISEYGdnpyZgAKVKlcLS0pKQkBAqVapESEgI3bt316nH09OTWbNmAXD58mXs7OzUBAygcuXK74zj7Nmz7N27F1NT02THwsPDU0zC/Pz8GDhwoPo6JiZGJ24hhBBC5BzpSsL09PR0Frdu37497du3z7Cg0sLJyQmNRsPly5d19js4OAAkW1z7U3v69CktWrRg8uTJyY7Z2tqmeI5Wq0Wr1X7s0IQQQgiRBaR7nrBHjx6xePFiQkJCgNetS126dMnQdRjfJX/+/DRs2JA5c+bQt2/fVMeFubq6EhkZSWRkpNqqdPHiRR4/fkypUqXUMkFBQXTu3Fk9LygoSD1eokQJIiMjuXv3LtbW1gCcOHHinfFVqFCBjRs3Ym9vT548MieuEEIIIXSla2D+gQMHKF68OD///DOPHj3i0aNH/PzzzxQvXpwDBw5kdIypmjdvHq9evcLDw4O1a9cSEhLC5cuX+e2337h06RL6+vo0aNAANzc3fHx8OH36NMePH6dTp07Url0bDw8PAIYMGUJAQADz588nLCyM6dOns2nTJgYPHgxAw4YNcXR0pHPnzpw7d46goCBGjBgBvB78n5LevXsTFRVFhw4dOHHiBOHh4QQGBtKlSxcSEhI+zQMSQgghRJaVriSsd+/eeHt7c+3aNTZt2sSmTZu4evUq7du3p3fv3hkdY6ocHR05c+YMDRo0wM/Pj3LlyuHh4cHs2bMZPHgwP/74IxqNhq1bt5IvXz5q1apFgwYNcHBwYO3atWo9rVu3ZtasWfz000+ULl2aX375haVLl1KnTh0A9PX12bJlC0+fPqVSpUp8++236qcjDQ0NU4ytcOHCBAUFkZCQQKNGjXBzc2PAgAFYWlrqdOUKIYQQInfSKOmYU8LIyIjg4OBkn0y8fPky5cuX58WLFxkWYFYVFBREjRo1uHLlCo6Ojh/lGmldhV0IIYQQWUdaf3+na7BShQoVCAkJSZaEhYSEUK5cufRUmeVt3rwZU1NTnJ2duXLlCv3798fT0/OjJWBCCCGEyNnSlYT169eP/v37c+XKFapWrQrA0aNHmTt3LpMmTeLcuXNq2bJly2ZMpJnsyZMnDBs2jOvXr1OgQAEaNGjAtGnTPsm1a41Yjb42cz/tmdFOTe2U2SEIIYQQmSpd3ZHvG9Ok0WhQFAWNRiOD0P+DpObMcn0XSBImhBBCZBMftTvy2rVr6Q4sq/D19eXx48fvXPtRCCGEEOJjSVcSVqxYsYyOQwghhBAiV0n3XAm3bt1i3bp1zJkzh59//llny+6mT5+Om5sbJiYm2NnZ0atXL54+fQq8bmI0MjLir7/+0jln8+bNmJmZ8fz5cwCGDRuGi4sLxsbGODg4MHLkSOLj4z/5vQghhBAia0pXS1hAQAA9evTAwMCA/Pnz60xYqtFo6NevX4YFmBn09PTUyWevXr1Kr169GDp0KPPmzcPc3JzmzZuzatUqmjRpop6zcuVKWrdujbGxMQBmZmYEBARQuHBhzp8/T7du3TAzM2Po0KGpXjc2NpbY2Fj1dUxMzMe7SSGEEEJkqnQNzLezs+N///sffn5+2Xbi0Q8ZE7Zhwwb+97//8eDBAwC2bNlCx44duXv3LsbGxsTExGBtbc3mzZtp3LhxinX89NNPrFmzhpMnT6Z6nTFjxjB27Nhk+2VgvhBCCJF9pHVgfroyqOfPn9O+fftsm4C9z+7du6lfvz5FihTBzMyMjh078vDhQ7WrsWnTpuTNm5dt27YBsHHjRszNzWnQoIFax9q1a/H09MTGxgZTU1NGjBjB9evX33ldPz8/oqOj1S0yMvLj3aQQQgghMlW6sqiuXbuyfv36jI4lS4iIiKB58+aULVuWjRs3curUKebOnQtAXFwcAAYGBrRt25ZVq1YBsGrVKtq1a6cu1H3kyBF8fHxo2rQp27dv58yZMwwfPlw9PzVarRZzc3OdTQghhBA5U7rGhPn7+9O8eXN27NiBm5sbefPm1Tk+ffr0DAkuM5w6dYrExESmTZumtvStW7cuWTkfHx8aNmzIP//8w99//8348ePVY4cPH6ZYsWLq+pIA//7778cPXgghhBDZRrqTsMDAQHXZorcH5mcX0dHRBAcH6+wrUKAA8fHxzJ49mxYtWhAUFMSCBQuSnVurVi1sbGzw8fGhePHiVKlSRT3m7OzM9evXWbNmDZUqVeKPP/5g8+bNH/t2hBBCCJGNpCsJmzZtGkuWLMHX1zeDw/m09u3bh7u7u86+rl27Mn36dCZPnoyfnx+1atXC39+fTp10B5JrNBo6dOjAlClTGDVqlM6xli1b8t1339GnTx9iY2Np1qwZI0eOZMyYMR/7loQQQgiRTaTr05E2NjYcPHgQZ2fnjxGT+P/S+ukKIYQQQmQdH/XTkf3792f27NnpDk4IIYQQIrdLV3fk8ePH+fvvv9m+fTulS5dONjB/06ZNGRKcEEIIIUROla4kzNLSki+++CKjYxGpqDVidbadrFUmZRVCCCFSlq4kbOnSpRkdx0fh6+vLsmXLAMibNy9FixalU6dO/PDDD+TJk4eEhAR+/vlnlixZQlhYGEZGRlStWpURI0bg6empU1dcXBwzZ85k5cqVhIWFYWxsTIkSJfj222/5+uuv1dbAyMhIRo8ezY4dO3jw4AG2tra0bt2aUaNGkT9//k/+DIQQQgiRNf2nKe/v37/PoUOHOHToEPfv38+omDJU48aNuX37NmFhYQwaNIgxY8YwdepUFEWhffv2jBs3jv79+xMSEsK+ffuws7OjTp06OssZxcXF4eXlxaRJk+jevTuHDx/m+PHj9O7dm9mzZ/PPP/8AcPXqVTw8PAgLC2P16tVcuXKFBQsWsGfPHqpVq0ZUVFQmPQUhhBBCZDXpagl79uwZffv2Zfny5SQmJgKgr69Pp06dmD17trqIdVag1WqxsbEBoGfPnmzevJlt27bh4ODAhg0b2LZtGy1atFDLL1y4kIcPH/Ltt9/SsGFDTExMmDlzJgcOHODkyZM6U1o4ODjw5ZdfqjPh9+7dGwMDA3bu3ImR0evuw6JFi+Lu7o6joyPDhw9n/vz5n/DuhRBCCJFVpaslbODAgezfv5/ff/+dx48f8/jxY7Zu3cr+/fsZNGhQRseYoYyMjIiLi2PVqlW4uLjoJGBJBg0axMOHD9m1axcAK1eupEGDBsnmFIPX3ZwmJiZERUURGBhIr1691AQsSdKkrmvXruVdM4LExsYSExOjswkhhBAiZ0pXErZx40YWL15MkyZN1DUOmzZtyq+//sqGDRsyOsYMoSgKu3fvJjAwkHr16hEaGoqrq2uKZZP2h4aGAhAWFkbJkiXfWX9YWBiKoryzzkePHr2z29bf3x8LCwt1s7OzS8utCSGEECIbSlcS9vz5c6ytrZPtL1SoEM+fP//PQWWk7du3Y2pqiqGhIU2aNKFdu3bqzPVpnaf2Q+azTcfctyo/Pz+io6PVLTIyMt11CSGEECJrS1cSVq1aNUaPHs3Lly/VfS9evGDs2LFUq1Ytw4LLCHXr1iU4OJiwsDBevHjBsmXLMDExwcXFhZCQkBTPSdrv4uKi/nvp0qV3XsfJyQmNRvPOOvPly0fBggVTrUOr1aoti0mbEEIIIXKmdCVhM2fOJCgoiM8++4z69etTv3597OzsCAoKYtasWRkd439iYmKCk5MTRYsWJU+e//scQvv27QkLC+P3339Pds60adPInz8/DRs2BOCrr75i9+7dnDlzJlnZ+Ph4nj17ppafN28eL1680Clz584dVq5cSbt27bLVAudCCCGE+HjSlYS5ubkRFhaGv78/5cuXp3z58kyaNIkrV65QunTpjI7xo2jfvj2ff/45nTt3ZvHixURERHDu3Dl69OjBtm3bWLRoESYmJgAMGDAAT09P6tevz9y5czl79ixXr15l3bp1VK1albCwMADmzJlDbGwsXl5eHDhwgMjISHbs2EHDhg0pUqQIEyZMyMxbFkIIIUQWkq4pKvz9/bG2tqZbt246+5csWcL9+/cZNmxYhgT3MWk0GtatW8fMmTOZMWMGvXr1wtDQkGrVqrFv3z6dyVq1Wi27du1ixowZ/PLLLwwePBhjY2NcXV3p168fZcqUAcDZ2ZmTJ08yevRovL29iYqKwsbGhtatWzN69GisrKwy63aFEEIIkcVolHSMJLe3t2fVqlVUr15dZ/+xY8do3749165dy7AAc7O0rsIuhBBCiKwjrb+/09UdeefOHWxtbZPtL1iwILdv305PlUIIIYQQuUq6krCkQfhvCwoKonDhwv85KCGEEEKInC5dY8K6devGgAEDiI+Pp169egDs2bOHoUOHZvkZ87OjWiNWo681en/BLOjU1E6ZHYIQQgiRJaWrJWzIkCF07dqVXr164eDggIODA3379qVfv374+flldIyfnEajeeeWNNnrmTNn+PLLL7G2tsbQ0BBnZ2e6deumzrQfERGBRqMhODg4825GCCGEEFlSupIwjUbD5MmTuX//PkePHuXs2bNERUUxatSojI4vU9y+fVvdZs6cibm5uc6+wYMHs337dqpWrUpsbCwrV64kJCSE3377DQsLC0aOHJnZtyCEEEKILC5d3ZFJTE1NqVSpUkbFkmXY2Nio/7ewsECj0ejse/78OV26dKFp06Zs3rxZ3V+8eHGqVKnC48ePP2W4QgghhMiG/lMSllsFBgby4MEDhg4dmuJxS0vLdNUbGxtLbGys+jomJiZd9QghhBAi60tXd2RulzRDfsmSJTO0Xn9/fywsLNTNzs4uQ+sXQgghRNYhSVg6pGN+2zTx8/MjOjpa3SIjIz/KdYQQQgiR+SQJSwcXFxcALl26lKH1arVazM3NdTYhhBBC5EyShKVDo0aNKFCgAFOmTEnxuAzMF0IIIcT7yMD8dDAxMWHRokV8+eWXtGzZkn79+uHk5MSDBw9Yt24d169fZ82aNWr5y5cvJ6ujdOnS5M2b91OGLYQQQogsRJKwdGrVqhWHDx/G39+fr776ipiYGOzs7KhXrx7jx4/XKdu+fftk50dGRvLZZ599qnCFEEIIkcVolI81ylz8Z2ldhV0IIYQQWUdaf3/LmDAhhBBCiEwgSZgQQgghRCaQMWHZQK0Rq9HXGmV2GKk6NbVTZocghBBCZDvSEiaEEEIIkQkkCQOOHDmCvr4+zZo1y+xQhBBCCJFLSBIGLF68mL59+3LgwAFu3bqV2eEIIYQQIhfI9UnY06dPWbt2LT179qRZs2YEBASoxx49eoSPjw8FCxbEyMgIZ2dnli5dCsC+ffvQaDQ6s+MHBwej0WiIiIgA4N9//6VFixbky5cPExMTSpcuzZ9//vkJ704IIYQQWVWuH5i/bt06SpYsSYkSJfj6668ZMGAAfn5+aDQaRo4cycWLF/nrr78oUKAAV65c4cWLF2muu3fv3sTFxXHgwAFMTEy4ePEipqamqZaPjY0lNjZWfR0TE/Of7k0IIYQQWVeuT8IWL17M119/DUDjxo2Jjo5m//791KlTh+vXr+Pu7o6HhwcA9vb2H1T39evXadOmDW5ubgA4ODi8s7y/vz9jx4798JsQQgghRLaTq7sjL1++zPHjx+nQoQMAefLkoV27dixevBiAnj17smbNGsqXL8/QoUM5fPjwB9Xfr18/xo8fj6enJ6NHj+bcuXPvLO/n50d0dLS6RUZGpu/GhBBCCJHl5eokbPHixbx69YrChQuTJ08e8uTJw/z589m4cSPR0dE0adKEf//9l++++45bt25Rv359Bg8eDICe3utH9+aqT/Hx8Tr1f/vtt1y9epWOHTty/vx5PDw8mD17dqrxaLVazM3NdTYhhBBC5Ey5Ngl79eoVy5cvZ9q0aQQHB6vb2bNnKVy4MKtXrwagYMGCdO7cmd9++42ZM2eycOFCdT/A7du31TqDg4OTXcfOzo7//e9/bNq0iUGDBvHrr79+/JsTQgghRJaXa8eEbd++nUePHtG1a1csLCx0jrVp04bFixdz69YtKlasSOnSpYmNjWX79u24uroC4OTkhJ2dHWPGjGHChAmEhoYybdo0nXoGDBhAkyZNcHFx4dGjR+zdu1c9XwghhBC5W65NwhYvXkyDBg2SJWDwOgmbMmUKLVq0wM/Pj4iICIyMjKhZsyZr1qwBIG/evKxevZqePXtStmxZKlWqxPjx4/nyyy/VehISEujduzc3btzA3Nycxo0bM2PGjA+O9cD4DtI1KYQQQuQwGuXNQU0iS4mJicHCwoLo6GhJwoQQQohsIq2/v3PtmDAhhBBCiMyUa7sjs5NaI1ajrzXK7DBSdWpqp8wOQQghhMh2pCVMCCGEECITZMskzNfXl9atW2d2GEIIIYQQ6ZYtkzAhhBBCiOwuxyVhFy5coEmTJpiammJtbU3Hjh158OCBerxOnTr069ePoUOHYmVlhY2NDWPGjNGp4/r167Rq1QpTU1PMzc3x9vbm7t27AISGhqLRaLh06ZLOOTNmzMDR0VF9vX//fipXroxWq8XW1pbvv/+eV69efbwbF0IIIUS2kqOSsMePH1OvXj3c3d05efIkO3bs4O7du3h7e+uUW7ZsGSYmJhw7dowpU6Ywbtw4du3aBUBiYiKtWrUiKiqK/fv3s2vXLq5evUq7du0AcHFxwcPDg5UrV+rUuXLlSr766isAbt68SdOmTalUqRJnz55l/vz5LF68mPHjx78z/tjYWGJiYnQ2IYQQQuRMOerTkXPmzMHd3Z2JEyeq+5YsWYKdnR2hoaG4uLgAULZsWUaPHg2As7Mzc+bMYc+ePTRs2JA9e/Zw/vx5rl27hp2dHQDLly+ndOnSnDhxgkqVKuHj48OcOXP48ccfgdetY6dOneK3334DYN68edjZ2TFnzhw0Gg0lS5bk1q1bDBs2jFGjRqnrTr7N39+fsWPHfrTnI4QQQoisI0e1hJ09e5a9e/diamqqbiVLlgQgPDxcLVe2bFmd82xtbbl37x4AISEh2NnZqQkYQKlSpbC0tCQkJASA9u3bExERwdGjR4HXrWAVKlRQrxUSEkK1atXQaDRqHZ6enjx9+pQbN26kGr+fnx/R0dHqFhkZ+V8ehxBCCCGysBzVEvb06VNatGjB5MmTkx2ztbVV/583b16dYxqNhsTExDRfx8bGhnr16rFq1SqqVq3KqlWr6NmzZ/oD//+0Wi1arfY/1yOEEEKIrC9HtYRVqFCBf/75B3t7e5ycnHQ2ExOTNNXh6upKZGSkTivUxYsXefz4MaVKlVL3+fj4sHbtWo4cOcLVq1dp3769Th1HjhzhzRWhgoKCMDMz47PPPsuAOxVCCCFEdpdtk7Do6GiCg4N1tu7duxMVFUWHDh04ceIE4eHhBAYG0qVLFxISEtJUb4MGDXBzc8PHx4fTp09z/PhxOnXqRO3atfHw8FDLffHFFzx58oSePXtSt25dChcurB7r1asXkZGR9O3bl0uXLrF161ZGjx7NwIEDUx0PJoQQQojcJdt2R+7btw93d3edfV27diUoKIhhw4bRqFEjYmNjKVasGI0bN05z8qPRaNi6dSt9+/alVq1a6Onp0bhxY2bPnq1TzszMjBYtWrBu3TqWLFmic6xIkSL8+eefDBkyhHLlymFlZUXXrl0ZMWLEf7tpIYQQQuQYGuXNPjORpaR1FXYhhBBCZB1p/f0tfWNCCCGEEJkg23ZH5ia1RqxGX2uUqTGcmtopU68vhBBC5DTSEpYGderUYcCAAf+pDnt7e2bOnJkh8QghhBAi+5OWsDTYtGmTOreYvb09AwYM+M9JmRBCCCFyN0nC0sDKyiqzQxBCCCFEDiPdkWmQ1B1Zp04d/v33X7777js0Go3OskSHDh2iZs2aGBkZYWdnR79+/Xj27FkmRi2EEEKIrEySsA+wadMmPvvsM8aNG8ft27e5ffs28HpdysaNG9OmTRvOnTvH2rVrOXToEH369Pmg+mNjY4mJidHZhBBCCJEzSRL2AaysrNDX18fMzAwbGxtsbGwA8Pf3x8fHhwEDBuDs7Ez16tX5+eefWb58OS9fvkxz/f7+/lhYWKjbm4uICyGEECJnkSQsA5w9e5aAgABMTU3VzcvLi8TERK5du5bmevz8/IiOjla3N9evFEIIIUTOIgPzM8DTp0/p0aMH/fr1S3asaNGiaa5Hq9Wi1WozMjQhhBBCZFGShH0gAwODZIuBV6hQgYsXL+Lk5JRJUQkhhBAiu5HuyA9kb2/PgQMHuHnzJg8ePABg2LBhHD58mD59+hAcHExYWBhbt2794IH5QgghhMg9JAn7QOPGjSMiIgJHR0cKFiwIQNmyZdm/fz+hoaHUrFkTd3d3Ro0aReHChTM5WiGEEEJkVRpFUZTMDkKkLK2rsAshhBAi60jr729pCRNCCCGEyASShAkhhBBCZIJc/+nIgIAABgwYwOPHj1Mt4+vry+PHj9myZcsni+tNtUasRl9r9NGvc2pqp49+DSGEEEK8li1awnx9fdFoNEyaNEln/5YtW3TWb3wfe3t7Zs6c+cHXnzVrFgEBAR98nhBCCCFEarJFEgZgaGjI5MmTefTo0Se/toWFBZaWlp/8ukIIIYTIubJNEtagQQNsbGzw9/dPtczGjRspXbo0Wq0We3t7pk2bph6rU6cO//77L9999x0ajSZZC1pgYCCurq6YmprSuHFjdXFueN0S17p1a526+vXrx9ChQ7GyssLGxoYxY8bo1Hfp0iVq1KiBoaEhpUqVYvfu3Wg0mkzr0hRCCCFE1pJtkjB9fX0mTpzI7NmzuXHjRrLjp06dwtvbm/bt23P+/HnGjBnDyJEj1W7ETZs28dlnnzFu3Dhu376tk2Q9f/6cn376iRUrVnDgwAGuX7/O4MGD3xnPsmXLMDEx4dixY0yZMoVx48axa9cuABISEmjdujXGxsYcO3aMhQsXMnz48PfeY2xsLDExMTqbEEIIIXKmbJOEAXz++eeUL1+e0aNHJzs2ffp06tevz8iRI3FxccHX15c+ffowdepUAKysrNDX18fMzAwbGxtsbGzUc+Pj41mwYAEeHh5UqFCBPn36sGfPnnfGUrZsWUaPHo2zszOdOnXCw8NDPWfXrl2Eh4ezfPlyypUrR40aNZgwYcJ778/f3x8LCwt1s7Oz+5DHI4QQQohsJFslYQCTJ09m2bJlhISE6OwPCQnB09NTZ5+npydhYWHJ1np8m7GxMY6OjuprW1tb7t27985zypYtq/P6zXMuX76MnZ2dTqJXuXLld9YH4OfnR3R0tLpFRka+9xwhhBBCZE/ZLgmrVasWXl5e+Pn5ZVidefPm1Xmt0Wh430ICKZ2TmJj4n+LQarWYm5vrbEIIIYTImbLlPGGTJk2ifPnylChRQt3n6upKUFCQTrmgoCBcXFzQ19cHwMDA4L2tYhmhRIkSREZGcvfuXaytrQE4ceLER7+uEEIIIbKPbNcSBuDm5oaPjw8///yzum/QoEHs2bOHH3/8kdDQUJYtW8acOXN0Btjb29tz4MABbt68yYMHDz5afA0bNsTR0ZHOnTtz7tw5goKCGDFiBMAHzWsmhBBCiJwrWyZhAOPGjdPp/qtQoQLr1q1jzZo1lClThlGjRjFu3Dh8fX11zomIiMDR0ZGCBQt+tNj09fXZsmULT58+pVKlSnz77bfqpyMNDQ0/2nWFEEIIkX1olPcNfhIZIigoiBo1anDlyhWdDwG8S1pXYRdCCCFE1pHW39/ZckxYdrB582ZMTU1xdnbmypUr9O/fH09PzzQnYEIIIYTI2SQJ+0iePHnCsGHDuH79OgUKFKBBgwY6M/gLIYQQIneT7sgsLKk5s1zfBehrjT769U5N7fTRryGEEELkdGntjsy2A/PfJ2l9yNS2t9d6FEIIIYT4lHJsd+Sba0OuXbuWUaNGcfnyZXWfqalpZoQlhBBCCAHk4JawpPUhbWxssLCwQKPR6Oxbs2YNrq6uGBoaUrJkSebNm6dz/o0bN+jQoQNWVlaYmJjg4eHBsWPHABgzZgzly5dnxYoV2NvbY2FhQfv27Xny5Il6fmxsLP369aNQoUIYGhpSo0YNmbBVCCGEEKocm4S9y8qVKxk1ahQTJkwgJCSEiRMnMnLkSJYtWwbA06dPqV27Njdv3mTbtm2cPXuWoUOH6sxLFh4ezpYtW9i+fTvbt29n//79TJo0ST0+dOhQNm7cyLJlyzh9+jROTk54eXkRFRX1ye9XCCGEEFlPju2OfJfRo0czbdo0vvjiCwCKFy/OxYsX+eWXX+jcuTOrVq3i/v37nDhxAisrKwCcnJx06khMTCQgIAAzMzMAOnbsyJ49e5gwYQLPnj1j/vz5BAQE0KRJEwB+/fVXdu3axeLFixkyZEiKccXGxhIbG6u+jomJyfB7F0IIIUTWkOuSsGfPnhEeHk7Xrl3p1q2buv/Vq1dYWFgAEBwcjLu7u5qApcTe3l5NwABsbW25d+8e8LqVLD4+Hk9PT/V43rx5qVy5MiEhIanW6e/vz9ixY9N9b0IIIYTIPnJdEvb06VPgdctUlSpVdI4lLfRtZPT+6SDy5s2r81qj0eh0V6aHn58fAwcOVF/HxMRgZ2f3n+oUQgghRNaU68aEWVtbU7hwYa5evYqTk5POVrx4cQDKli1LcHBwusdvOTo6YmBgQFBQkLovPj6eEydOUKpUqVTP02q1mJub62xCCCGEyJlyXUsYwNixY+nXrx8WFhY0btyY2NhYTp48yaNHjxg4cCAdOnRg4sSJtG7dGn9/f2xtbTlz5gyFCxemWrVq763fxMSEnj17MmTIEKysrChatChTpkzh+fPndO3a9RPcoRBCCCGyulyZhH377bcYGxszdepUhgwZgomJCW5ubgwYMAAAAwMDdu7cyaBBg2jatCmvXr2iVKlSzJ07N83XmDRpEomJiXTs2JEnT57g4eFBYGAg+fLl+0h3JYQQQojsRJYtysLSuuyBEEIIIbKOXL9skRBCCCFEViZJmBBCCCFEJsiVY8Kym1ojVqOvff+0Gak5NbVTBkYjhBBCiIwgLWFCCCGEEJlAkrB08PX1pXXr1qkeP3PmDO3atcPW1hatVkuxYsVo3rw5v//+O/I5CCGEEEKAJGEZbuvWrVStWpWnT5+ybNkyQkJC2LFjB59//jkjRowgOjo6s0MUQgghRBYgY8Iy0LNnz+jatSvNmjVj06ZNOsdcXV3p2rWrtIQJIYQQApAkLEPt3LmThw8fMnTo0FTLaDSaVI/FxsYSGxurvo6JicnQ+IQQQgiRdUh3ZAYKDQ0FoESJEuq+EydOYGpqqm7bt29P9Xx/f38sLCzUTRbvFkIIIXIuScI+sqTFwIODg3n27BmvXr1Ktayfnx/R0dHqFhkZ+QkjFUIIIcSnJN2RGcjZ2RmAy5cvU7VqVQC0Wi1OTk5pOl+r1aLVaj9afEIIIYTIOqQlLAM1atQIKysrJk+enNmhCCGEECKLk5awdIqOjiY4OFhnX/78+Vm0aBHt2rWjWbNm9OvXD2dnZ54+fcqOHTsA0NfXz4RohRBCCJHVSBKWTvv27cPd3V1nX9euXVm0aBGHDx9m8uTJdOrUiaioKCwsLPDw8GDNmjU0b978g691YHyHd67CLoQQQojsR6PIxFVZVkxMDBYWFkRHR0sSJoQQQmQTaf39LWPChBBCCCEygXRHZgO1RqxGX2uU5vKnpnb6iNEIIYQQIiPkipYwjUbDli1bMjsMIYQQQghVtk/C7ty5Q//+/XFycsLQ0BBra2s8PT2ZP38+z58/B+D27ds0adIkkyMVQgghhPg/2bo78urVq3h6emJpacnEiRNxc3NDq9Vy/vx5Fi5cSJEiRWjZsiU2NjaZHaoQQgghhI5s3RLWq1cv8uTJw8mTJ/H29sbV1RUHBwdatWrFH3/8QYsWLYDk3ZHnz5+nXr16GBkZkT9/frp3787Tp0/V476+vrRu3ZqffvoJW1tb8ufPT+/evYmPj1fLxMbGMnjwYIoUKYKJiQlVqlRh3759OvEdOnSImjVrYmRkhJ2dHf369ePZs2cf9ZkIIYQQInvItknYw4cP2blzJ71798bExCTFMhqNJtm+Z8+e4eXlRb58+Thx4gTr169n9+7d9OnTR6fc3r17CQ8PZ+/evSxbtoyAgAACAgLU43369OHIkSOsWbOGc+fO8eWXX9K4cWPCwsIACA8Pp3HjxrRp04Zz586xdu1aDh06lOw6b4qNjSUmJkZnE0IIIUTOlG2TsCtXrqAoCiVKlNDZX6BAAUxNTTE1NWXYsGHJzlu1ahUvX75k+fLllClThnr16jFnzhxWrFjB3bt31XL58uVjzpw5lCxZkubNm9OsWTP27NkDwPXr11m6dCnr16+nZs2aODo6MnjwYGrUqMHSpUsB8Pf3x8fHhwEDBuDs7Ez16tX5+eefWb58OS9fvkzxnvz9/bGwsFA3Ozu7jHpcQgghhMhisvWYsJQcP36cxMREfHx8iI2NTXY8JCSEcuXK6bSeeXp6kpiYyOXLl7G2tgagdOnSOksM2dracv78eeB1d2ZCQgIuLi46dcfGxpI/f34Azp49y7lz51i5cqV6XFEUEhMTuXbtGq6ursli8/PzY+DAgerrmJgYScSEEEKIHCrbJmFOTk5oNBouX76ss9/BwQEAI6O0z6uVkrx58+q81mg0JCYmAvD06VP09fU5depUsrUgTU1N1TI9evSgX79+yeouWrRoitfUarVotdr/FLcQQgghsodsm4Tlz5+fhg0bMmfOHPr27ZvquLC3ubq6EhAQwLNnz9RzgoKC0NPTS9a1mRp3d3cSEhK4d+8eNWvWTLFMhQoVuHjxIk5OTmm7ISGEEELkKtl2TBjAvHnzePXqFR4eHqxdu5aQkBAuX77Mb7/9xqVLl5K1UgH4+PhgaGhI586duXDhAnv37qVv37507NhR7Yp8HxcXF3x8fOjUqRObNm3i2rVrHD9+HH9/f/744w8Ahg0bxuHDh+nTpw/BwcGEhYWxdevWdw7MF0IIIUTukW1bwgAcHR05c+YMEydOxM/Pjxs3bqDVailVqhSDBw+mV69eyc4xNjYmMDCQ/v37U6lSJYyNjWnTpg3Tp0//oGsvXbqU8ePHM2jQIG7evEmBAgWoWrUqzZs3B6Bs2bLs37+f4cOHU7NmTRRFwdHRkXbt2mXIvQshhBAie9MoiqJkdhAiZWldhV0IIYQQWUdaf39n6+5IIYQQQojsSpKwbKDWiNVUHLI8s8MQQgghRAaSJEwIIYQQIhNIEiaEEEIIkQlyVRKWtDB3ksjISL755hsKFy6MgYEBxYoVo3///jx8+DDZuf/88w/e3t4ULFgQrVaLi4sLo0aN4vnz58nKHj58mKZNm5IvXz4MDQ1xc3Nj+vTpJCQkfMzbE0IIIUQ2kquSsDddvXoVDw8PwsLCWL16NVeuXGHBggXs2bOHatWqERUVpZY9evQoVapUIS4ujj/++IPQ0FAmTJhAQEAADRs2JC4uTi27efNmateuzWeffcbevXu5dOkS/fv3Z/z48bRv3x75MKoQQgghIJvPE/Zf9O7dGwMDA3bu3KkucVS0aFHc3d1xdHRk+PDhzJ8/H0VR6Nq1K66urmzatAk9vdd5a7FixXBxccHd3Z0ZM2YwbNgwnj17Rrdu3WjZsiULFy5Ur/Xtt99ibW1Ny5YtWbduXapzhcXGxuqsdxkTE/MRn4AQQgghMlOubAmLiooiMDCQXr16JVtj0sbGBh8fH9auXYuiKAQHB3Px4kUGDhyoJmBJypUrR4MGDVi9ejUAO3fu5OHDhwwePDjZNVu0aIGLi4taNiX+/v5YWFiomyzeLYQQQuRcuTIJCwsLQ1EUXF1dUzzu6urKo0ePuH//PqGhoeq+1MomlXlf2ZIlS6plUuLn50d0dLS6RUZGpvmehBBCCJG95NruSOC947MMDAzSXPZD6k2NVqtFq9Wm61whhBBCZC+5siXMyckJjUZDSEhIisdDQkIoWLAglpaWuLi4qPtSK5tU5kPKCiGEECJ3y5VJWP78+WnYsCHz5s3jxYsXOsfu3LnDypUr8fX1BaB8+fKULFmSGTNmkJiYqFP27Nmz7N69mw4dOgDQqFEjrKysmDZtWrJrbtu2jbCwMLWsEEIIIXK3XJmEAcyZM4fY2Fi8vLw4cOAAkZGR7Nixg4YNG6pzgAFoNBoWL17MxYsXadOmDcePH+f69eusX7+eFi1aUK1aNQYMGACAiYkJv/zyC1u3bqV79+6cO3eOiIgIFi9ejK+vL23btsXb2zsT71oIIYQQWUWuTcKcnZ05ceIEDg4OeHt7U6xYMZo0aYKLiwtBQUGYmpqqZatXr87Ro0fR19enSZMmODk54efnR+fOndm1a5fOOK62bduyd+9erl+/Ts2aNSlRogQzZsxg+PDhrFmzBo1G88GxHhjfgVNTO2XIfQshhBAia9AoMnuoavTo0UyfPp1du3ZRtWrVzA6HmJgYLCwsiI6OxtzcPLPDEUIIIUQapPX3d67+dOTbxo4di729PUePHqVy5crJ5gUTQgghhMgo0hL2idSpU4fy5cszc+bMNJ+TlEmX67sAfa2RdEkKIYQQ2UBaW8KkqScN3lz4u06dOupAfCGEEEKI9JIkTAghhBAiE0gS9gF8fX3Zv38/s2bNQqPRoNFoiIiIAODChQs0adIEU1NTrK2t6dixIw8ePMjcgIUQQgiRZUkS9gFmzZpFtWrV6NatG7dv3+b27dvY2dnx+PFj6tWrh7u7OydPnmTHjh3cvXv3g+cEi42NJSYmRmcTQgghRM4kn478ABYWFhgYGGBsbIyNjY26f86cObi7uzNx4kR135IlS7CzsyM0NDTNSxX5+/szduzYDI9bCCGEEFmPtIRlgLNnz7J3715MTU3VrWTJkgCEh4enuR4/Pz+io6PVLTIy8mOFLIQQQohMJi1hGeDp06e0aNGCyZMnJztma2ub5nq0Wq3O7PtCCCGEyLkkCftABgYGJCQk6OyrUKECGzduxN7enjx55JEKIYQQ4v2kO/ID2dvbc+zYMSIiInjw4AGJiYn07t2bqKgoOnTowIkTJwgPDycwMJAuXbokS9iEEEIIIUCSsA82ePBg9PX1KVWqFAULFuT69esULlyYoKAgEhISaNSoEW5ubgwYMABLS0tZ+kgIIYQQKZJli7IwWcBbCCGEyH5k2SIhhBBCiCxMkjAhhBBCiEwgSVg2UGvEaioOWZ7ZYQghhBAiA0kSBmg0GrZs2fLRr+Pr60vr1q0/+nWEEEIIkfVl+STszp079O3bFwcHB7RaLXZ2drRo0YI9e/ZkdmhCCCGEEOmWpWcWjYiIwNPTE0tLS6ZOnYqbmxvx8fEEBgbSu3dvLl26lNkhCiGEEEKkS5ZuCevVqxcajYbjx4/Tpk0bXFxcKF26NAMHDuTo0aMAXL9+nVatWmFqaoq5uTne3t7cvXtXp5758+fj6OiIgYEBJUqUYMWKFaleMyIiAo1Gw5o1a6hevTqGhoaUKVOG/fv3q2USEhLo2rUrxYsXx8jIiBIlSjBr1iydehISEhg4cCCWlpbkz5+foUOHIrOBCCGEECJJlk3CoqKi2LFjB71798bExCTZcUtLSxITE2nVqhVRUVHs37+fXbt2cfXqVdq1a6eW27x5M/3792fQoEFcuHCBHj160KVLF/bu3fvO6w8ZMoRBgwZx5swZqlWrRosWLXj48CEAiYmJfPbZZ6xfv56LFy8yatQofvjhB9atW6eeP23aNAICAliyZAmHDh0iKiqKzZs3v/OasbGxxMTE6GxCCCGEyKGULOrYsWMKoGzatCnVMjt37lT09fWV69evq/v++ecfBVCOHz+uKIqiVK9eXenWrZvOeV9++aXStGlT9TWgbN68WVEURbl27ZoCKJMmTVKPx8fHK5999pkyefLkVGPp3bu30qZNG/W1ra2tMmXKlGR1tGrVKtU6Ro8erQDJtnJ9FygVBi9L9TwhhBBCZB3R0dEKoERHR7+zXJZtCVPS0HUXEhKCnZ0ddnZ26r5SpUphaWlJSEiIWsbT01PnPE9PT/V4aqpVq6b+P0+ePHh4eOicM3fuXCpWrEjBggUxNTVl4cKFXL9+HYDo6Ghu375NlSpVktXxLn5+fkRHR6tbZGTke56AEEIIIbKrLDsw39nZGY1GkyUH369Zs4bBgwczbdo0qlWrhpmZGVOnTuXYsWP/qV6tVotWq82gKIUQQgiRlWXZljArKyu8vLyYO3cuz549S3b88ePHuLq6EhkZqdNidPHiRR4/fkypUqUAcHV1JSgoSOfcoKAg9Xhqkgb+A7x69YpTp07h6uqqnl+9enV69eqFu7s7Tk5OhIeHq+UtLCywtbXVScqS6hBCCCGEgCzcEgavu/w8PT2pXLky48aNo2zZsrx69Ypdu3Yxf/58Ll68iJubGz4+PsycOZNXr17Rq1cvateurXb9DRkyBG9vb9zd3WnQoAG///47mzZtYvfu3e+9trOzM66ursyYMYNHjx7xzTffAK9b6ZYvX05gYCDFixdnxYoVnDhxguLFi6vn9+/fn0mTJuHs7EzJkiWZPn06jx8//mjPSgghhBDZzKcZopZ+t27dUnr37q0UK1ZMMTAwUIoUKaK0bNlS2bt3r6IoivLvv/8qLVu2VExMTBQzMzPlyy+/VO7cuaNTx7x58xQHBwclb968iouLi7J8+XKd46QwMH/VqlVK5cqVFQMDA6VUqVLK33//rZZ/+fKl4uvrq1hYWCiWlpZKz549le+//14pV66cWiY+Pl7p37+/Ym5urlhaWioDBw5UOnXq9M6B+W9L68A+IYQQQmQdaf39rVEUmbzqTRERERQvXpwzZ85Qvnz5TI0lOjoaS0tLIiMjMTc3z9RYhBBCCJE2MTEx2NnZ8fjxYywsLFItl6W7I3O7pHnJ3vz0pxBCCCGyhydPnkgSll1ZWVkBr1cFeNebmFsk/WUhLYP/R56JLnkeuuR5JCfPRJc8j+Qy4pkoisKTJ08oXLjwO8tJEvYWe3v7LLO8kJ7e6w+vWlhYyDfHG8zNzeV5vEWeiS55HrrkeSQnz0SXPI/k/uszSUvjSZadokIIIYQQIieTJEwIIYQQIhNIEpaFabVaRo8eLbPo/3/yPJKTZ6JLnocueR7JyTPRJc8juU/5TGSKCiGEEEKITCAtYUIIIYQQmUCSMCGEEEKITCBJmBBCCCFEJpAkTAghhBAiE0gSlkXNnTsXe3t7DA0NqVKlCsePH8/skD4Jf39/KlWqhJmZGYUKFaJ169ZcvnxZp8zLly/p3bs3+fPnx9TUlDZt2nD37t1MivjTmzRpEhqNhgEDBqj7ctszuXnzJl//v/buPabq+v8D+PPA4XKgFEI5x6M7isaEFBlJOsJNExaVU8t1Y3zxFG1MLgnqEKthfzRUaGYqDS9rNZdmsUElzhy3MBo3uagEIivCSpAVcREvEOf1++M7P7+OUsE3z/kQ5/nYzsZ5v9/nnNf7ucOH1w7nc85//gMfHx/odDoEBQXh7NmzyryIYPv27ZgxYwZ0Oh0iIyPR1tamYsW2NTIygoyMDPj5+UGn02HevHl46623rD54ejJncubMGaxevRpGoxEajQafffaZ1fxY9t7T04OYmBhMmTIFXl5eeOWVV3Dt2jU77uLe+qtMhoeHkZ6ejqCgIHh6esJoNGL9+vW4cuWK1X1Mpkz+7jnyRxs2bIBGo8G7775rNW6LPNiETUCffPIJNm/ejDfffBP19fUIDg5GVFQUuru71S7N5srLy5GUlISqqioUFRVheHgYjz/+OAYHB5U1mzZtwokTJ5CXl4fy8nJcuXIF69atU7Fq+6mtrcXBgwexaNEiq3FHyuS3335DeHg4XFxccOrUKTQ3N2P37t3w9vZW1mRnZ2Pfvn04cOAAqqur4enpiaioKNy8eVPFym0nKysLubm5yMnJQUtLC7KyspCdnY39+/crayZzJoODgwgODsZ777036vxY9h4TE4Nvv/0WRUVFKCwsxJkzZxAfH2+vLdxzf5XJ9evXUV9fj4yMDNTX1yM/Px+tra1Ys2aN1brJlMnfPUduKygoQFVV1ahfN2STPIQmnCVLlkhSUpJyfWRkRIxGo+zcuVPFqtTR3d0tAKS8vFxERHp7e8XFxUXy8vKUNS0tLQJAKisr1SrTLgYGBsTf31+Kiopk+fLlkpKSIiKOl0l6erosW7bsT+ctFosYDAZ5++23lbHe3l5xc3OTjz/+2B4l2t2qVaskLi7OamzdunUSExMjIo6VCQApKChQro9l783NzQJAamtrlTWnTp0SjUYjP//8s91qt5U7MxlNTU2NAJCOjg4RmdyZ/FkeP/30k8ycOVOamppk9uzZsmfPHmXOVnnwlbAJZmhoCHV1dYiMjFTGnJycEBkZicrKShUrU0dfXx+A//8y87q6OgwPD1vlExAQAJPJNOnzSUpKwqpVq6z2DjheJl988QVCQ0Px3HPPwdfXFyEhITh8+LAy397ejq6uLqs8pk6diqVLl07KPADg0UcfRUlJCS5dugQAOHfuHCoqKvDkk08CcMxMbhvL3isrK+Hl5YXQ0FBlTWRkJJycnFBdXW33mtXQ19cHjUYDLy8vAI6XicViQWxsLNLS0rBgwYK75m2VB7/Ae4L55ZdfMDIyAr1ebzWu1+tx8eJFlapSh8ViQWpqKsLDw7Fw4UIAQFdXF1xdXZUDxW16vR5dXV0qVGkfx48fR319PWpra++ac7RMvv/+e+Tm5mLz5s14/fXXUVtbi40bN8LV1RVms1nZ82i/Q5MxDwDYtm0b+vv7ERAQAGdnZ4yMjCAzMxMxMTEA4JCZ3DaWvXd1dcHX19dqXqvV4oEHHpj0+QD/fU9peno6oqOjlS+sdrRMsrKyoNVqsXHjxlHnbZUHmzCasJKSktDU1ISKigq1S1HVjz/+iJSUFBQVFcHd3V3tclRnsVgQGhqKHTt2AABCQkLQ1NSEAwcOwGw2q1ydOj799FMcPXoUx44dw4IFC9DY2IjU1FQYjUaHzYTGZnh4GM8//zxEBLm5uWqXo4q6ujrs3bsX9fX10Gg0dn1s/jtygpk2bRqcnZ3vOrPt6tWrMBgMKlVlf8nJySgsLERZWRlmzZqljBsMBgwNDaG3t9dq/WTOp66uDt3d3Xj44Yeh1Wqh1WpRXl6Offv2QavVQq/XO1QmM2bMwEMPPWQ1FhgYiMuXLwOAsmdH+h1KS0vDtm3b8OKLLyIoKAixsbHYtGkTdu7cCcAxM7ltLHs3GAx3nfj0+++/o6enZ1Lnc7sB6+joQFFRkfIqGOBYmXz99dfo7u6GyWRSjrEdHR3YsmUL5syZA8B2ebAJm2BcXV2xePFilJSUKGMWiwUlJSUICwtTsTL7EBEkJyejoKAApaWl8PPzs5pfvHgxXFxcrPJpbW3F5cuXJ20+ERERuHDhAhobG5VLaGgoYmJilJ8dKZPw8PC7Prbk0qVLmD17NgDAz88PBoPBKo/+/n5UV1dPyjyA/57t5uRkfTh3dnaGxWIB4JiZ3DaWvYeFhaG3txd1dXXKmtLSUlgsFixdutTuNdvD7Qasra0NxcXF8PHxsZp3pExiY2Nx/vx5q2Os0WhEWloaTp8+DcCGefzPb+knmzl+/Li4ubnJhx9+KM3NzRIfHy9eXl7S1dWldmk2l5CQIFOnTpWvvvpKOjs7lcv169eVNRs2bBCTySSlpaVy9uxZCQsLk7CwMBWrtr8/nh0p4liZ1NTUiFarlczMTGlra5OjR4+Kh4eHfPTRR8qaXbt2iZeXl3z++edy/vx5Wbt2rfj5+cmNGzdUrNx2zGazzJw5UwoLC6W9vV3y8/Nl2rRpsnXrVmXNZM5kYGBAGhoapKGhQQDIO++8Iw0NDcqZfmPZ+xNPPCEhISFSXV0tFRUV4u/vL9HR0Wpt6R/7q0yGhoZkzZo1MmvWLGlsbLQ61t66dUu5j8mUyd89R+5059mRIrbJg03YBLV//34xmUzi6uoqS5YskaqqKrVLsgsAo14++OADZc2NGzckMTFRvL29xcPDQ5555hnp7OxUr2gV3NmEOVomJ06ckIULF4qbm5sEBATIoUOHrOYtFotkZGSIXq8XNzc3iYiIkNbWVpWqtb3+/n5JSUkRk8kk7u7uMnfuXHnjjTes/qBO5kzKyspGPW6YzWYRGdvef/31V4mOjpb77rtPpkyZIi+//LIMDAyosJt7468yaW9v/9NjbVlZmXIfkymTv3uO3Gm0JswWeWhE/vCRykRERERkF3xPGBEREZEK2IQRERERqYBNGBEREZEK2IQRERERqYBNGBEREZEK2IQRERERqYBNGBEREZEK2IQRERERqYBNGBHRv8wPP/wAjUaDxsZGtUshon+ATRgRERGRCtiEERGNk8ViQXZ2Nh588EG4ubnBZDIhMzMTAHDhwgWsXLkSOp0OPj4+iI+Px7Vr15TbrlixAqmpqVb39/TTT+Oll15Srs+ZMwc7duxAXFwc7r//fphMJhw6dEiZ9/PzAwCEhIRAo9FgxYoVNtsrEdkOmzAionF67bXXsGvXLmRkZKC5uRnHjh2DXq/H4OAgoqKi4O3tjdraWuTl5aG4uBjJycnjfozdu3cjNDQUDQ0NSExMREJCAlpbWwEANTU1AIDi4mJ0dnYiPz//nu6PiOxDq3YBRET/JgMDA9i7dy9ycnJgNpsBAPPmzcOyZctw+PBh3Lx5E0eOHIGnpycAICcnB6tXr0ZWVhb0ev2YH+epp55CYmIiACA9PR179uxBWVkZ5s+fj+nTpwMAfHx8YDAY7vEOiche+EoYEdE4tLS04NatW4iIiBh1Ljg4WGnAACA8PBwWi0V5FWusFi1apPys0WhgMBjQ3d39vxdORBMOmzAionHQ6XT/6PZOTk4QEaux4eHhu9a5uLhYXddoNLBYLP/osYloYmETRkQ0Dv7+/tDpdCgpKblrLjAwEOfOncPg4KAy9s0338DJyQnz588HAEyfPh2dnZ3K/MjICJqamsZVg6urq3JbIvr3YhNGRDQO7u7uSE9Px9atW3HkyBF89913qKqqwvvvv4+YmBi4u7vDbDajqakJZWVlePXVVxEbG6u8H2zlypU4efIkTp48iYsXLyIhIQG9vb3jqsHX1xc6nQ5ffvklrl69ir6+PhvslIhsjU0YEdE4ZWRkYMuWLdi+fTsCAwPxwgsvoLu7Gx4eHjh9+jR6enrwyCOP4Nlnn0VERARycnKU28bFxcFsNmP9+vVYvnw55s6di8cee2xcj6/VarFv3z4cPHgQRqMRa9euvddbJCI70Midb04gIiIiIpvjK2FEREREKmATRkRERKQCNmFEREREKmATRkRERKQCNmFEREREKmATRkRERKQCNmFEREREKmATRkRERKQCNmFEREREKmATRkRERKQCNmFEREREKmATRkRERKSC/wNsDs63G6yqdQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение классов в Контрольной выборке:\n", - "company\n", - "Realme 26\n", - "Samsung 26\n", - "Vivo 22\n", - "Motorola 18\n", - "Honor 15\n", - "OPPO 13\n", - "Poco 12\n", - "Xiaomi 11\n", - "iQOO 11\n", - "OnePlus 8\n", - "Huawei 7\n", - "Asus 7\n", - "TCL 6\n", - "POCO 5\n", - "Oppo 4\n", - "Google 4\n", - "Tecno 3\n", - "Nothing 3\n", - "itel 2\n", - "Lava 1\n", - "Lenovo 1\n", - "Name: count, dtype: int64\n" - ] - }, - { - "data": { - "image/png": "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tatgZmYmaGpqChUrVhS6du0q3L59W9lhlQhHjhwRAORYevXqJQjCu9tUTJw4UTAxMRGkUqnQrFkz4datW8oNWkXlda5TU1OFli1bCuXLlxc0NDQES0tLoV+/fsLjx4+VHbbKye0cAxDWrVsnlnn9+rUwaNAgwdDQUNDR0RG+/fZb4dGjR8oLWkV96lzfv39faNy4sWBkZCRIpVLB1tZWGDNmjCCXy5UbeCFIBEEQvmbSR0REREScE0ZERESkFEzCiIiIiJSASRgRERGREjAJIyIiIlICJmFERERESsAkjIiIiEgJmIQRERERKQGTMCIiIiIlYBJGRKRi4uLiIJFIxOflEZFqYhJGREREpARMwoiICigrKwtz586Fra0tpFIpKleujJkzZwIArl27hqZNm0JbWxvlypVD//79kZycLNb19PTE8OHDFdrr2LEj/Pz8xNdWVlaYNWsW+vTpA319fVSuXBmrV68Wt1epUgUA4OrqColEAk9Pzy92rET05TAJIyIqoMDAQMyePRsTJ07EjRs3sHHjRpiYmCAlJQVeXl4wNDTE+fPnsXXrVhw6dAiDBw8u8D7mz58PNzc3XL58GYMGDcLAgQNx69YtAMC5c+cAAIcOHcKjR4+wY8eOIj0+Ivo6yig7ACIiVfLq1SssXrwYwcHB6NWrFwDAxsYGDRs2xK+//oo3b95g/fr10NXVBQAEBwejXbt2mDNnDkxMTPK9n9atW2PQoEEAgHHjxmHhwoU4cuQIHBwcUL58eQBAuXLlYGpqWsRHSERfC3vCiIgKICoqCmlpaWjWrFmu21xcXMQEDADc3d2RlZUl9mLll7Ozs/izRCKBqakpnj59WvjAiajYYRJGRFQA2tran1VfTU0NgiAorMvIyMhRTkNDQ+G1RCJBVlbWZ+2biIoXJmFERAVgZ2cHbW1tHD58OMc2R0dHREZGIiUlRVwXEREBNTU1ODg4AADKly+PR48eidszMzNx/fr1AsWgqakp1iUi1cUkjIioALS0tDBu3DiMHTsW69evR2xsLM6cOYM1a9bA19cXWlpa6NWrF65fv44jR45gyJAh6NGjhzgfrGnTpvjrr7/w119/4ebNmxg4cCASExMLFEOFChWgra2N/fv348mTJ5DL5V/gSInoS2MSRkRUQBMnTsSoUaMwadIkODo6omvXrnj69Cl0dHQQHh6OhIQE1KlTB126dEGzZs0QHBws1u3Tpw969eqFnj17wsPDA9bW1mjSpEmB9l+mTBksWbIEq1atgrm5OTp06FDUh0hEX4FE+HByAhERERF9cewJIyIiIlICJmFERERESsAkjIiIiEgJmIQRERERKQGTMCIiIiIlYBJGREREpARMwoiIiIiUgEkYERERkRIwCSMiIiJSAiZhRERERErAJIyIiIhICZiEERERESnB/wH3dduN51rWOQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Распределение классов в Тестовой выборке:\n", - "company\n", - "Realme 35\n", - "Samsung 27\n", - "Vivo 26\n", - "Motorola 20\n", - "Honor 14\n", - "Xiaomi 13\n", - "Poco 11\n", - "OnePlus 11\n", - "Huawei 9\n", - "iQOO 9\n", - "TCL 6\n", - "OPPO 5\n", - "Nothing 4\n", - "Google 3\n", - "Lava 2\n", - "Asus 2\n", - "Oppo 2\n", - "Tecno 2\n", - "Itel 2\n", - "Gionee 1\n", - "Lenovo 1\n", - "LG 1\n", - "Name: count, dtype: int64\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Проверка распределения классов в столбце company\n", - "class_distribution = df['company'].value_counts()\n", - "print(\"Распределение классов в company:\")\n", - "print(class_distribution)\n", - "\n", - "# Визуализация распределения классов\n", - "sns.countplot(y='company', data=df, order=class_distribution.index)\n", - "plt.title('Распределение классов в company')\n", - "plt.show()\n", - "\n", - "# Проверка сбалансированности для каждой выборки\n", - "def check_balance(df, title):\n", - " class_distribution = df['company'].value_counts()\n", - " print(f\"Распределение классов в {title}:\")\n", - " print(class_distribution)\n", - " sns.countplot(y='company', data=df, order=class_distribution.index)\n", - " plt.title(f'Распределение классов в {title}')\n", - " plt.show()\n", - "\n", - "# Разделение данных на обучающую, контрольную и тестовую выборки\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "train_df, temp_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "val_df, test_df = train_test_split(temp_df, test_size=0.5, random_state=42)\n", - "\n", - "# Проверка сбалансированности для обучающей, контрольной и тестовой выборок\n", - "check_balance(train_df, 'Обучающей выборке')\n", - "check_balance(val_df, 'Контрольной выборке')\n", - "check_balance(test_df, 'Тестовой выборке')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " Данные по столбцу company являются несбалансированными. Некоторые компании, такие как Vivo, Realme, и Samsung, имеют значительно больше устройств, чем другие, такие как LG, Gionee, и Itel." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки до upsampling: 671\n", - "Размер контрольной выборки: 288\n", - "Размер тестовой выборки: 411\n", - "\n", - "Распределение классов в всем датасете:\n", - "Класс Vivo: 186 (13.58%)\n", - "Класс Realme: 186 (13.58%)\n", - "Класс Samsung: 181 (13.21%)\n", - "Класс Motorola: 127 (9.27%)\n", - "Класс Xiaomi: 90 (6.57%)\n", - "Класс Honor: 88 (6.42%)\n", - "Класс Poco: 75 (5.47%)\n", - "Класс OnePlus: 75 (5.47%)\n", - "Класс Huawei: 62 (4.53%)\n", - "Класс iQOO: 57 (4.16%)\n", - "Класс OPPO: 38 (2.77%)\n", - "Класс Oppo: 27 (1.97%)\n", - "Класс TCL: 26 (1.90%)\n", - "Класс Google: 23 (1.68%)\n", - "Класс Asus: 21 (1.53%)\n", - "Класс POCO: 19 (1.39%)\n", - "Класс Lava: 19 (1.39%)\n", - "Класс Nothing: 15 (1.09%)\n", - "Класс Lenovo: 14 (1.02%)\n", - "Класс Tecno: 13 (0.95%)\n", - "Класс itel: 12 (0.88%)\n", - "Класс LG: 6 (0.44%)\n", - "Класс Gionee: 5 (0.36%)\n", - "Класс Itel: 3 (0.22%)\n", - "Класс IQOO: 1 (0.07%)\n", - "Класс Coolpad: 1 (0.07%)\n", - "\n", - "Распределение классов в Обучающей выборке до upsampling:\n", - "Класс Vivo: 94 (14.01%)\n", - "Класс Samsung: 89 (13.26%)\n", - "Класс Realme: 82 (12.22%)\n", - "Класс Motorola: 66 (9.84%)\n", - "Класс Xiaomi: 46 (6.86%)\n", - "Класс Honor: 40 (5.96%)\n", - "Класс OnePlus: 40 (5.96%)\n", - "Класс Poco: 37 (5.51%)\n", - "Класс Huawei: 35 (5.22%)\n", - "Класс iQOO: 28 (4.17%)\n", - "Класс OPPO: 15 (2.24%)\n", - "Класс Oppo: 14 (2.09%)\n", - "Класс Lava: 12 (1.79%)\n", - "Класс Google: 12 (1.79%)\n", - "Класс TCL: 10 (1.49%)\n", - "Класс Lenovo: 9 (1.34%)\n", - "Класс POCO: 9 (1.34%)\n", - "Класс Asus: 8 (1.19%)\n", - "Класс itel: 7 (1.04%)\n", - "Класс Nothing: 5 (0.75%)\n", - "Класс Tecno: 5 (0.75%)\n", - "Класс LG: 3 (0.45%)\n", - "Класс Gionee: 3 (0.45%)\n", - "Класс Coolpad: 1 (0.15%)\n", - "Класс Itel: 1 (0.15%)\n", - "Размер обучающей выборки после upsampling: 2350\n", - "\n", - "Распределение классов в Обучающей выборке после upsampling:\n", - "Класс Realme: 94 (4.00%)\n", - "Класс Motorola: 94 (4.00%)\n", - "Класс Vivo: 94 (4.00%)\n", - "Класс Lava: 94 (4.00%)\n", - "Класс Lenovo: 94 (4.00%)\n", - "Класс TCL: 94 (4.00%)\n", - "Класс OPPO: 94 (4.00%)\n", - "Класс Honor: 94 (4.00%)\n", - "Класс Poco: 94 (4.00%)\n", - "Класс itel: 94 (4.00%)\n", - "Класс Oppo: 94 (4.00%)\n", - "Класс iQOO: 94 (4.00%)\n", - "Класс Samsung: 94 (4.00%)\n", - "Класс Xiaomi: 94 (4.00%)\n", - "Класс LG: 94 (4.00%)\n", - "Класс Huawei: 94 (4.00%)\n", - "Класс OnePlus: 94 (4.00%)\n", - "Класс Google: 94 (4.00%)\n", - "Класс Tecno: 94 (4.00%)\n", - "Класс Asus: 94 (4.00%)\n", - "Класс Gionee: 94 (4.00%)\n", - "Класс POCO: 94 (4.00%)\n", - "Класс Nothing: 94 (4.00%)\n", - "Класс Coolpad: 94 (4.00%)\n", - "Класс Itel: 94 (4.00%)\n", - "\n", - "Распределение классов в Контрольной выборке:\n", - "Класс Vivo: 44 (15.28%)\n", - "Класс Realme: 43 (14.93%)\n", - "Класс Samsung: 39 (13.54%)\n", - "Класс Motorola: 23 (7.99%)\n", - "Класс Xiaomi: 20 (6.94%)\n", - "Класс Honor: 19 (6.60%)\n", - "Класс OnePlus: 16 (5.56%)\n", - "Класс Poco: 15 (5.21%)\n", - "Класс Huawei: 11 (3.82%)\n", - "Класс iQOO: 9 (3.12%)\n", - "Класс Oppo: 7 (2.43%)\n", - "Класс POCO: 5 (1.74%)\n", - "Класс OPPO: 5 (1.74%)\n", - "Класс Google: 4 (1.39%)\n", - "Класс Asus: 4 (1.39%)\n", - "Класс TCL: 4 (1.39%)\n", - "Класс Lava: 4 (1.39%)\n", - "Класс itel: 3 (1.04%)\n", - "Класс Nothing: 3 (1.04%)\n", - "Класс Tecno: 3 (1.04%)\n", - "Класс Lenovo: 3 (1.04%)\n", - "Класс LG: 2 (0.69%)\n", - "Класс Gionee: 1 (0.35%)\n", - "Класс IQOO: 1 (0.35%)\n", - "\n", - "Распределение классов в Тестовой выборке:\n", - "Класс Realme: 61 (14.84%)\n", - "Класс Samsung: 53 (12.90%)\n", - "Класс Vivo: 48 (11.68%)\n", - "Класс Motorola: 38 (9.25%)\n", - "Класс Honor: 29 (7.06%)\n", - "Класс Xiaomi: 24 (5.84%)\n", - "Класс Poco: 23 (5.60%)\n", - "Класс iQOO: 20 (4.87%)\n", - "Класс OnePlus: 19 (4.62%)\n", - "Класс OPPO: 18 (4.38%)\n", - "Класс Huawei: 16 (3.89%)\n", - "Класс TCL: 12 (2.92%)\n", - "Класс Asus: 9 (2.19%)\n", - "Класс Google: 7 (1.70%)\n", - "Класс Nothing: 7 (1.70%)\n", - "Класс Oppo: 6 (1.46%)\n", - "Класс POCO: 5 (1.22%)\n", - "Класс Tecno: 5 (1.22%)\n", - "Класс Lava: 3 (0.73%)\n", - "Класс Lenovo: 2 (0.49%)\n", - "Класс itel: 2 (0.49%)\n", - "Класс Itel: 2 (0.49%)\n", - "Класс LG: 1 (0.24%)\n", - "Класс Gionee: 1 (0.24%)\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки до upsampling:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))\n", - "\n", - "# Функция для проверки балансировки данных\n", - "def check_balance(df, title):\n", - " class_distribution = df['company'].value_counts()\n", - " print(f\"\\nРаспределение классов в {title}:\")\n", - " for cls, count in class_distribution.items():\n", - " print(f\"Класс {cls}: {count} ({count / len(df) * 100:.2f}%)\")\n", - "\n", - "# Проверка балансировки для всего датасета\n", - "check_balance(df, 'всем датасете')\n", - "\n", - "# Проверка балансировки для обучающей выборки до upsampling\n", - "check_balance(train_df, 'Обучающей выборке до upsampling')\n", - "\n", - "# Применение upsampling к обучающей выборке\n", - "X_train = train_df.drop('company', axis=1) # Отделяем признаки от целевой переменной\n", - "y_train = train_df['company'] # Целевая переменная\n", - "\n", - "# Инициализация RandomOverSampler\n", - "ros = RandomOverSampler(random_state=42)\n", - "\n", - "# Применение upsampling\n", - "X_train_resampled, y_train_resampled = ros.fit_resample(X_train, y_train)\n", - "\n", - "# Создание нового DataFrame с балансированными данными\n", - "train_df_resampled = pd.concat([X_train_resampled, y_train_resampled], axis=1)\n", - "\n", - "# Вывод размеров выборок после upsampling\n", - "print(\"Размер обучающей выборки после upsampling:\", len(train_df_resampled))\n", - "\n", - "# Проверка балансировки для обучающей выборки после upsampling\n", - "check_balance(train_df_resampled, 'Обучающей выборке после upsampling')\n", - "\n", - "# Проверка балансировки для контрольной и тестовой выборок (они не должны измениться)\n", - "check_balance(val_df, 'Контрольной выборке')\n", - "check_balance(test_df, 'Тестовой выборке')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Данные были сбалансированы. Теперь можно перейти к конструированию признаков. Поставлены следующие задачи:\n", - "1. Классифицировать мобильные устройства по ценовым категориям (например, бюджетные, средний класс, флагманы).\n", - "2. Определить, какие характеристики мобильных устройств наиболее сильно влияют на их рейтинг." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "\n", - "# Определение категориальных признаков\n", - "categorical_features = [\n", - " 'Rating', 'Ram',\n", - " 'Battery', 'Display', 'Camera', 'External_Memory', 'Android_version',\n", - " 'Price', 'company', 'Inbuilt_memory', 'fast_charging',\n", - " 'Screen_resolution', 'Processor'\n", - "]\n", - "\n", - "# Применение one-hot encoding к обучающей выборке\n", - "train_df_resampled_encoded = pd.get_dummies(train_df_resampled, columns=categorical_features)\n", - "\n", - "# Применение one-hot encoding к контрольной выборке\n", - "val_df_encoded = pd.get_dummies(val_df, columns=categorical_features)\n", - "\n", - "# Применение one-hot encoding к тестовой выборке\n", - "test_df_encoded = pd.get_dummies(test_df, columns=categorical_features)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Дискретизация числовых признаков" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки после балансировки: (5600, 22)\n", - "Размер контрольной выборки: (288, 22)\n", - "Размер тестовой выборки: (411, 22)\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "import re\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Извлечение числовых значений из столбца Battery\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "df['Ram'] = df['Ram'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "df['Camera'] = df['Camera'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Применение upsampling к обучающей выборке (если это необходимо)\n", - "X_train = train_df.drop('Price', axis=1) # Отделяем признаки от целевой переменной\n", - "y_train = train_df['Price'] # Целевая переменная\n", - "\n", - "# Инициализация RandomOverSampler\n", - "ros = RandomOverSampler(random_state=42)\n", - "\n", - "# Применение upsampling\n", - "X_train_resampled, y_train_resampled = ros.fit_resample(X_train, y_train)\n", - "\n", - "# Создание нового DataFrame с балансированными данными\n", - "train_df_resampled = pd.concat([X_train_resampled, y_train_resampled], axis=1)\n", - "\n", - "# Определение числовых признаков для дискретизации\n", - "numerical_features = ['Spec_score', 'Battery', 'Ram', 'Camera' ]\n", - "\n", - "# Функция для дискретизации числовых признаков\n", - "def discretize_features(df, features, bins=5, labels=False):\n", - " for feature in features:\n", - " try:\n", - " # Заполнение NaN значений, если они есть\n", - " df[feature] = df[feature].fillna(df[feature].median())\n", - " df[f'{feature}_bin'] = pd.cut(df[feature], bins=bins, labels=labels)\n", - " except Exception as e:\n", - " print(f\"Ошибка при дискретизации признака {feature}: {e}\")\n", - " return df\n", - "\n", - "# Применение дискретизации к обучающей, контрольной и тестовой выборкам\n", - "train_df_resampled = discretize_features(train_df_resampled, numerical_features)\n", - "val_df = discretize_features(val_df, numerical_features)\n", - "test_df = discretize_features(test_df, numerical_features)\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки после балансировки:\", train_df_resampled.shape)\n", - "print(\"Размер контрольной выборки:\", val_df.shape)\n", - "print(\"Размер тестовой выборки:\", test_df.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ручной синтез. Создание новых признаков на основе экспертных знаний и логики предметной области." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки после балансировки: (5600, 19)\n", - "Размер контрольной выборки: (288, 19)\n", - "Размер тестовой выборки: (411, 19)\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Преобразование столбца Battery в числовой формат\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Преобразование столбцов Camera и Display в числовой формат\n", - "df['Camera'] = pd.to_numeric(df['Camera'], errors='coerce')\n", - "df['Display'] = pd.to_numeric(df['Display'], errors='coerce')\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Применение upsampling к обучающей выборке (если это необходимо)\n", - "X_train = train_df.drop('Price', axis=1) # Отделяем признаки от целевой переменной\n", - "y_train = train_df['Price'] # Целевая переменная\n", - "\n", - "# Инициализация RandomOverSampler\n", - "ros = RandomOverSampler(random_state=42)\n", - "\n", - "# Применение upsampling\n", - "X_train_resampled, y_train_resampled = ros.fit_resample(X_train, y_train)\n", - "\n", - "# Создание нового DataFrame с балансированными данными\n", - "train_df_resampled = pd.concat([X_train_resampled, y_train_resampled], axis=1)\n", - "\n", - "# Создание нового признака \"Camera_to_Display_Ratio\" на основе признаков \"Camera\" и \"Display\"\n", - "train_df_resampled['Camera_to_Display_Ratio'] = train_df_resampled['Camera'] / train_df_resampled['Display']\n", - "val_df['Camera_to_Display_Ratio'] = val_df['Camera'] / val_df['Display']\n", - "test_df['Camera_to_Display_Ratio'] = test_df['Camera'] / test_df['Display']\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки после балансировки:\", train_df_resampled.shape)\n", - "print(\"Размер контрольной выборки:\", val_df.shape)\n", - "print(\"Размер тестовой выборки:\", test_df.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Масштабирование признаков - это процесс преобразования числовых признаков таким образом, чтобы они имели одинаковый масштаб. Это важно для многих алгоритмов машинного обучения, которые чувствительны к масштабу признаков, таких как линейная регрессия, метод опорных векторов (SVM) и нейронные сети." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки после балансировки: (5600, 19)\n", - "Размер контрольной выборки: (288, 19)\n", - "Размер тестовой выборки: (411, 19)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\utils\\extmath.py:1137: RuntimeWarning: invalid value encountered in divide\n", - " updated_mean = (last_sum + new_sum) / updated_sample_count\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\utils\\extmath.py:1142: RuntimeWarning: invalid value encountered in divide\n", - " T = new_sum / new_sample_count\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\utils\\extmath.py:1162: RuntimeWarning: invalid value encountered in divide\n", - " new_unnormalized_variance -= correction**2 / new_sample_count\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "from sklearn.preprocessing import StandardScaler\n", - "import re\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Преобразование столбца Battery в числовой формат\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Преобразование столбцов Camera и Display в числовой формат\n", - "df['Camera'] = pd.to_numeric(df['Camera'], errors='coerce')\n", - "df['Display'] = pd.to_numeric(df['Display'], errors='coerce')\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Применение upsampling к обучающей выборке (если это необходимо)\n", - "X_train = train_df.drop('Price', axis=1) # Отделяем признаки от целевой переменной\n", - "y_train = train_df['Price'] # Целевая переменная\n", - "\n", - "# Инициализация RandomOverSampler\n", - "ros = RandomOverSampler(random_state=42)\n", - "\n", - "# Применение upsampling\n", - "X_train_resampled, y_train_resampled = ros.fit_resample(X_train, y_train)\n", - "\n", - "# Создание нового DataFrame с балансированными данными\n", - "train_df_resampled = pd.concat([X_train_resampled, y_train_resampled], axis=1)\n", - "\n", - "# Создание нового признака \"Camera_to_Display_Ratio\" на основе признаков \"Camera\" и \"Display\"\n", - "train_df_resampled['Camera_to_Display_Ratio'] = train_df_resampled['Camera'] / train_df_resampled['Display']\n", - "val_df['Camera_to_Display_Ratio'] = val_df['Camera'] / val_df['Display']\n", - "test_df['Camera_to_Display_Ratio'] = test_df['Camera'] / test_df['Display']\n", - "\n", - "# Определение числовых признаков для масштабирования\n", - "numerical_features_to_scale = ['Spec_score', 'No_of_sim', 'Ram', 'Battery', 'Display', 'Camera', 'Inbuilt_memory', 'Screen_resolution', 'Camera_to_Display_Ratio']\n", - "\n", - "# Удаление строковых значений из числовых признаков\n", - "for feature in numerical_features_to_scale:\n", - " train_df_resampled[feature] = pd.to_numeric(train_df_resampled[feature], errors='coerce')\n", - " val_df[feature] = pd.to_numeric(val_df[feature], errors='coerce')\n", - " test_df[feature] = pd.to_numeric(test_df[feature], errors='coerce')\n", - "\n", - "# Инициализация StandardScaler\n", - "scaler = StandardScaler()\n", - "\n", - "# Масштабирование числовых признаков в обучающей выборке\n", - "train_df_resampled[numerical_features_to_scale] = scaler.fit_transform(train_df_resampled[numerical_features_to_scale])\n", - "\n", - "# Масштабирование числовых признаков в контрольной и тестовой выборках\n", - "val_df[numerical_features_to_scale] = scaler.transform(val_df[numerical_features_to_scale])\n", - "test_df[numerical_features_to_scale] = scaler.transform(test_df[numerical_features_to_scale])\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки после балансировки:\", train_df_resampled.shape)\n", - "print(\"Размер контрольной выборки:\", val_df.shape)\n", - "print(\"Размер тестовой выборки:\", test_df.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Конструирование признаков с применением фреймворка Featuretools" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1733: UserWarning: index id not found in dataframe, creating new integer column\n", - " warnings.warn(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", - " pd.to_datetime(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\synthesis\\deep_feature_synthesis.py:169: UserWarning: Only one dataframe in entityset, changing max_depth to 1 since deeper features cannot be created\n", - " warnings.warn(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\logical_types.py:841: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " series = series.replace(ww.config.get_option(\"nan_values\"), np.nan)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Обучающая выборка после конструирования признаков:\n", - " Unnamed: 0 Rating Spec_score No_of_sim Ram \\\n", - "id \n", - "0 305 4.70 86 Dual Sim, 3G, 4G, 5G, VoLTE, 12 GB RAM \n", - "1 941 4.45 71 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM \n", - "2 800 4.20 68 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM \n", - "3 97 4.25 69 Dual Sim, 3G, 4G, VoLTE, 4 GB RAM \n", - "4 1339 4.30 74 Dual Sim, 3G, 4G, VoLTE, 6 GB RAM \n", - "\n", - " Battery External_Memory Android_version Price \\\n", - "id \n", - "0 5000 Android v12 NaN 30999.0 \n", - "1 5000 Memory Card Supported, upto 1 TB 12 6999.0 \n", - "2 5000 Memory Card Supported 12 8999.0 \n", - "3 5000 Memory Card Supported 12 9999.0 \n", - "4 5000 Memory Card Supported, upto 256 GB 12 8499.0 \n", - "\n", - " company Inbuilt_memory fast_charging \\\n", - "id \n", - "0 Realme 256 GB inbuilt 65W Fast Charging \n", - "1 Motorola 64 GB inbuilt 10W Fast Charging \n", - "2 Vivo 64 GB inbuilt 10W Fast Charging \n", - "3 Vivo 128 GB inbuilt 10W Fast Charging \n", - "4 Lava 128 GB inbuilt NaN \n", - "\n", - " Screen_resolution Processor \n", - "id \n", - "0 1080 x 2400 px Octa Core \n", - "1 720 x 1600 px Octa Core \n", - "2 720 x 1600 px Display with Water Drop Notch Octa Core \n", - "3 720 x 1600 px Display with Water Drop Notch Octa Core \n", - "4 1600 x 720 px Octa Core \n", - "Контрольная выборка после конструирования признаков:\n", - " Unnamed: 0 Rating Spec_score No_of_sim Ram \\\n", - "id \n", - "1028 NaN NaN NaN \n", - "825 NaN NaN NaN \n", - "900 NaN NaN NaN \n", - "702 NaN NaN NaN \n", - "230 1050 4.05 90 Dual Sim, 3G, 4G, 5G, VoLTE, 8 GB RAM \n", - "\n", - " Battery External_Memory Android_version Price company \\\n", - "id \n", - "1028 NaN NaN NaN NaN \n", - "825 NaN NaN NaN NaN \n", - "900 NaN NaN NaN NaN \n", - "702 NaN NaN NaN NaN \n", - "230 4500 Android v12 NaN 62990.0 Motorola \n", - "\n", - " Inbuilt_memory fast_charging Screen_resolution Processor \n", - "id \n", - "1028 NaN NaN NaN NaN \n", - "825 NaN NaN NaN NaN \n", - "900 NaN NaN NaN NaN \n", - "702 NaN NaN NaN NaN \n", - "230 128 GB inbuilt 125W Fast Charging 1080 x 2400 px Octa Core \n", - "Тестовая выборка после конструирования признаков:\n", - " Unnamed: 0 Rating Spec_score No_of_sim \\\n", - "id \n", - "427 187 4.40 91 Dual Sim, 3G, 4G, 5G, VoLTE, \n", - "1088 NaN NaN \n", - "668 592 4.45 91 Dual Sim, 3G, 4G, 5G, VoLTE, \n", - "572 1130 4.60 75 Dual Sim, 3G, 4G, VoLTE, \n", - "115 117 4.60 72 Dual Sim, 3G, 4G, VoLTE, \n", - "\n", - " Ram Battery External_Memory Android_version \\\n", - "id \n", - "427 12 GB RAM 5000 Memory Card Not Supported 14 \n", - "1088 NaN NaN NaN \n", - "668 12 GB RAM 4500 Android v12 NaN \n", - "572 6 GB RAM 5000 Memory Card Supported, upto 1 TB 13 \n", - "115 4 GB RAM 5000 Memory Card Supported, upto 1 TB 12 \n", - "\n", - " Price company Inbuilt_memory fast_charging \\\n", - "id \n", - "427 63999.0 Vivo 256 GB inbuilt 120W Fast Charging \n", - "1088 NaN NaN NaN NaN \n", - "668 54990.0 Honor 256 GB inbuilt 100W Fast Charging \n", - "572 8499.0 Xiaomi 128 GB inbuilt 18W Fast Charging \n", - "115 11580.0 Vivo 64 GB inbuilt 18W Fast Charging \n", - "\n", - " Screen_resolution Processor \n", - "id \n", - "427 1260 x 2800 px Octa Core \n", - "1088 NaN NaN \n", - "668 1200 x 2652 px Octa Core \n", - "572 720 x 1600 px Octa Core \n", - "115 720 x 1612 px Display with Water Drop Notch Octa Core \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\logical_types.py:841: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " series = series.replace(ww.config.get_option(\"nan_values\"), np.nan)\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "import featuretools as ft\n", - "import re\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Преобразование столбца Battery в числовой формат\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Преобразование столбцов Camera и Display в числовой формат\n", - "df['Camera'] = pd.to_numeric(df['Camera'], errors='coerce')\n", - "df['Display'] = pd.to_numeric(df['Display'], errors='coerce')\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Создание нового признака \"Camera_to_Display_Ratio\" на основе признаков \"Camera\" и \"Display\"\n", - "train_df['Camera_to_Display_Ratio'] = train_df['Camera'] / train_df['Display']\n", - "val_df['Camera_to_Display_Ratio'] = val_df['Camera'] / val_df['Display']\n", - "test_df['Camera_to_Display_Ratio'] = test_df['Camera'] / test_df['Display']\n", - "\n", - "# Определение сущностей\n", - "es = ft.EntitySet(id='mobile_data')\n", - "es = es.add_dataframe(dataframe_name='train', dataframe=train_df, index='id')\n", - "\n", - "# Генерация признаков\n", - "feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name='train', max_depth=2)\n", - "\n", - "# Преобразование признаков для контрольной и тестовой выборок\n", - "val_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=val_df.index)\n", - "test_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=test_df.index)\n", - "\n", - "# Вывод первых нескольких строк для проверки\n", - "print(\"Обучающая выборка после конструирования признаков:\")\n", - "print(feature_matrix.head())\n", - "print(\"Контрольная выборка после конструирования признаков:\")\n", - "print(val_feature_matrix.head())\n", - "print(\"Тестовая выборка после конструирования признаков:\")\n", - "print(test_feature_matrix.head())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Оценка качества каждого набора признаков\n", - "\n", - "Предсказательная способность Метрики: RMSE, MAE, R²\n", - "\n", - "Методы: Обучение модели на обучающей выборке и оценка на контрольной и тестовой выборках.\n", - "\n", - "Скорость вычисления Методы: Измерение времени выполнения генерации признаков и обучения модели.\n", - "\n", - "Надежность Методы: Кросс-валидация, анализ чувствительности модели к изменениям в данных.\n", - "\n", - "Корреляция Методы: Анализ корреляционной матрицы признаков, удаление мультиколлинеарных признаков.\n", - "\n", - "Цельность Методы: Проверка логической связи между признаками и целевой переменной, интерпретация результатов модели." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1733: UserWarning: index id not found in dataframe, creating new integer column\n", - " warnings.warn(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\synthesis\\deep_feature_synthesis.py:169: UserWarning: Only one dataframe in entityset, changing max_depth to 1 since deeper features cannot be created\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 671\n", - "Размер контрольной выборки: 288\n", - "Размер тестовой выборки: 411\n", - "Feature Importance:\n", - " feature importance\n", - "4 Price 0.999443\n", - "2 Spec_score 0.000227\n", - "3 Battery 0.000146\n", - "0 Unnamed: 0 0.000146\n", - "1 Rating 0.000039\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import RandomOverSampler\n", - "import featuretools as ft\n", - "from sklearn.ensemble import RandomForestRegressor\n", - "import re\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Преобразование столбца Battery в числовой формат\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Преобразование столбца Display в числовой формат\n", - "df['Camera'] = pd.to_numeric(df['Camera'], errors='coerce')\n", - "df['Display'] = pd.to_numeric(df['Display'], errors='coerce')\n", - "df['Inbuilt_memory'] = pd.to_numeric(df['Inbuilt_memory'], errors='coerce')\n", - "df['fast_charging'] = pd.to_numeric(df['fast_charging'], errors='coerce')\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Удаление столбцов с текстовыми значениями, которые не могут быть преобразованы в числа\n", - "df = df.drop(columns=['Name', 'company', 'Android_version', 'Processor_name', 'External_Memory', 'No_of_sim', 'Ram', 'Screen_resolution', 'Processor' ])\n", - "\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))\n", - "\n", - "# Применение upsampling к обучающей выборке (если это необходимо)\n", - "X_train = train_df.drop('Price', axis=1) # Отделяем признаки от целевой переменной\n", - "y_train = train_df['Price'] # Целевая переменная\n", - "\n", - "# Инициализация RandomOverSampler\n", - "ros = RandomOverSampler(random_state=42)\n", - "\n", - "# Применение upsampling\n", - "X_train_resampled, y_train_resampled = ros.fit_resample(X_train, y_train)\n", - "\n", - "# Создание нового DataFrame с балансированными данными\n", - "train_df_resampled = pd.concat([X_train_resampled, y_train_resampled], axis=1)\n", - "\n", - "# Определение сущностей\n", - "es = ft.EntitySet(id='mobile_data')\n", - "es = es.add_dataframe(dataframe_name='mobile', dataframe=train_df_resampled, index='id')\n", - "\n", - "# Генерация признаков\n", - "feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name='mobile', max_depth=2)\n", - "\n", - "# Преобразование признаков для контрольной и тестовой выборок\n", - "val_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=val_df.index)\n", - "test_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=test_df.index)\n", - "\n", - "# Оценка важности признаков\n", - "X = feature_matrix\n", - "y = train_df_resampled['Price']\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", - "model = RandomForestRegressor(n_estimators=100, random_state=42)\n", - "model.fit(X_train, y_train)\n", - "\n", - "# Получение важности признаков\n", - "importances = model.feature_importances_\n", - "feature_names = feature_matrix.columns\n", - "\n", - "# Сортировка признаков по важности\n", - "feature_importance = pd.DataFrame({'feature': feature_names, 'importance': importances})\n", - "feature_importance = feature_importance.sort_values(by='importance', ascending=False)\n", - "\n", - "print(\"Feature Importance:\")\n", - "print(feature_importance)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Размер обучающей выборки: 671\n", - "Размер контрольной выборки: 288\n", - "Размер тестовой выборки: 411\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1733: UserWarning: index id not found in dataframe, creating new integer column\n", - " warnings.warn(\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\logical_types.py:841: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " series = series.replace(ww.config.get_option(\"nan_values\"), np.nan)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\featuretools\\computational_backends\\feature_set_calculator.py:143: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " df = pd.concat([df, default_df], sort=True)\n", - "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\woodwork\\logical_types.py:841: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " series = series.replace(ww.config.get_option(\"nan_values\"), np.nan)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mean Squared Error: 53834536.21488374\n", - "R2 Score: 0.9445638071244045\n", - "Cross-validated Mean Squared Error: 311290473.964474\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA40AAAIjCAYAAACnNf4TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDwUlEQVR4nO3dd3RU1f7//9ckIRNIpaWAISGGqnQEA1IFQ5GiXhBESqRcpShy4QJSQxfhQxGJSIsFQUBFUUERQbwUQZqAEBBCESlKCxFJIDm/P/wxX8dkAwkhA+H5WGvWyuyzzz7vM5sseLHPOWOzLMsSAAAAAACZcHN1AQAAAACAOxehEQAAAABgRGgEAAAAABgRGgEAAAAARoRGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQA3HXi4+Nls9kyfQ0aNOi2HHPDhg0aOXKkzp8/f1vGvxXXPo8ffvjB1aVk28yZMxUfH+/qMgAAmfBwdQEAAGTXqFGjVLJkSae2Bx988LYca8OGDYqNjVWXLl0UEBBwW45xL5s5c6aKFCmiLl26uLoUAMA/EBoBAHetpk2bqnr16q4u45b88ccf8vb2dnUZLnPp0iUVKFDA1WUAAK6Dy1MBAHnWihUrVKdOHXl7e8vX11fNmzfXnj17nPr8+OOP6tKliyIiIuTl5aXg4GA999xzOnPmjKPPyJEjNWDAAElSyZIlHZfCHj58WIcPH5bNZsv00kqbzaaRI0c6jWOz2fTTTz/pmWeeUcGCBfXII484tr/33nuqVq2a8ufPr0KFCqldu3Y6duxYts69S5cu8vHx0dGjR/X444/Lx8dHxYsX1xtvvCFJ2rVrlxo2bChvb2+FhYXp/fffd9r/2iWv69at07///W8VLlxYfn5+6tSpk86dO5fheDNnztQDDzwgu92uYsWKqVevXhku5a1fv74efPBBbd26VXXr1lWBAgX0yiuvKDw8XHv27NG3337r+Gzr168vSTp79qz69++vChUqyMfHR35+fmratKl27tzpNPbatWtls9m0ePFijR07Vvfdd5+8vLz06KOP6ueff85Q7/fff69mzZqpYMGC8vb2VsWKFTVt2jSnPvv27dO//vUvFSpUSF5eXqpevbo+/fTTrE4FANz1WGkEANy1Lly4oN9//92prUiRIpKkd999V507d1Z0dLReffVVXbp0SXFxcXrkkUe0fft2hYeHS5JWrVqlQ4cOKSYmRsHBwdqzZ4/eeust7dmzR5s2bZLNZtOTTz6p/fv3a+HChZoyZYrjGEWLFtVvv/2W5brbtGmjUqVKady4cbIsS5I0duxYDRs2TG3btlW3bt3022+/6fXXX1fdunW1ffv2bF0Sm5aWpqZNm6pu3bqaOHGiFixYoN69e8vb21tDhgxRhw4d9OSTT+rNN99Up06dFBUVleFy3969eysgIEAjR45UQkKC4uLidOTIEUdIk/4Kw7GxsWrUqJFeeOEFR78tW7Zo/fr1ypcvn2O8M2fOqGnTpmrXrp2effZZBQUFqX79+urTp498fHw0ZMgQSVJQUJAk6dChQ1q2bJnatGmjkiVL6tSpU5o1a5bq1aunn376ScWKFXOqd8KECXJzc1P//v114cIFTZw4UR06dND333/v6LNq1So9/vjjCgkJ0UsvvaTg4GDt3btXn332mV566SVJ0p49e1S7dm0VL15cgwYNkre3txYvXqzWrVvrww8/1BNPPJHl+QCAu5YFAMBdZv78+ZakTF+WZVkXL160AgICrO7duzvtd/LkScvf39+p/dKlSxnGX7hwoSXJWrdunaPttddesyRZiYmJTn0TExMtSdb8+fMzjCPJGjFihOP9iBEjLElW+/btnfodPnzYcnd3t8aOHevUvmvXLsvDwyNDu+nz2LJli6Otc+fOliRr3LhxjrZz585Z+fPnt2w2m7Vo0SJH+759+zLUem3MatWqWampqY72iRMnWpKsTz75xLIsyzp9+rTl6elpPfbYY1ZaWpqj34wZMyxJ1rx58xxt9erVsyRZb775ZoZzeOCBB6x69eplaL98+bLTuJb112dut9utUaNGOdrWrFljSbLKlStnpaSkONqnTZtmSbJ27dplWZZlXb161SpZsqQVFhZmnTt3zmnc9PR0x8+PPvqoVaFCBevy5ctO22vVqmWVKlUqQ50AkJdxeSoA4K71xhtvaNWqVU4v6a+VpPPnz6t9+/b6/fffHS93d3fVrFlTa9ascYyRP39+x8+XL1/W77//rocffliStG3btttS9/PPP+/0/qOPPlJ6erratm3rVG9wcLBKlSrlVG9WdevWzfFzQECAypQpI29vb7Vt29bRXqZMGQUEBOjQoUMZ9u/Ro4fTSuEL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oREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQAAAAAGBEaAQAAAABGhEYAAAAAgBGhEQAAAABgRGgEAAAAABgRGgEAAAAARoRGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQAAAAAGBEaAQAAAABGhEYAAAAAgBGhEQAAAABgRGgEAAAAABgRGgEAAAAARoRGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQAAAAAGBEaAQAAAABGhEYAAAAAgBGhEQAAAABgRGgEAAAAABgRGgEAAAAARoRGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGB0x4bG3377TS+88IJKlCghu92u4OBgRUdHa/369a4uDQAAAADuGR6uLsDkqaeeUmpqqt5++21FRETo1KlTWr16tc6cOePq0nJdamqqPD09XV0GAAAAgHvQHbnSeP78eX333Xd69dVX1aBBA4WFhalGjRoaPHiwWrZsKUmy2WyKi4tT06ZNlT9/fkVERGjp0qVO4xw7dkxt27ZVQECAChUqpFatWunw4cNOfebNm6cHHnhAdrtdISEh6t279w3rsyxLI0eOdKyCFitWTC+++KJje0pKigYOHKjQ0FDZ7XZFRkZq7ty5ju3ffvutatSo4TjmoEGDdPXqVcf2+vXrq3fv3urbt6+KFCmi6OhoSdLu3bvVtGlT+fj4KCgoSB07dtTvv/9urDMlJUVJSUlOLwAAAADIijsyNPr4+MjHx0fLli1TSkqKsd+wYcP01FNPaefOnerQoYPatWunvXv3SpKuXLmi6Oho+fr66rvvvtP69evl4+OjJk2aKDU1VZIUFxenXr16qUePHtq1a5c+/fRTRUZG3rC+Dz/8UFOmTNGsWbN04MABLVu2TBUqVHBs79SpkxYuXKjp06dr7969mjVrlnx8fCRJx48fV7NmzfTQQw9p586diouL09y5czVmzBinY7z99tvy9PTU+vXr9eabb+r8+fNq2LChqlSpoh9++EErV67UqVOn1LZtW2Od48ePl7+/v+MVGhp6w3MDAAAAgL+zWZZlubqIzHz44Yfq3r27/vzzT1WtWlX16tVTu3btVLFiRUl/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9O6772rdunU6evSo+vfv79j+6quvasGCBZo/f77Wr1+vpKQkLVu27Lr1pqSkKCkpyekFAAAAAFnB5ak38Nlnn8nHx0dXr15VSkqK3NzcNGPGDElS8eLFnYJdnz599OWXX2rx4sWqUaOG/P395enpqQIFCtzwctQrV67ozTff1P333y9J6t27t0aNGuXY/vrrr2vw4MF64oknJEkzZszQF198cd0xx48fr9jY2GydNwAAAABIhMYbatCggeLi4vTHH39oypQp8vDw0FNPPSVJSktL07hx47R48WIdP35cqampSklJUYECBbJ8nAIFCjgCoySFhITo9OnTkqQLFy7o1KlTqlGjhmO7u7u7qlWrpvT0dOOYgwcPVr9+/Rzvk5KSjCudAAAAAJAZQuMNeHt7KzIyUpI0b948VapUSXPnzlXXrl312muvadq0aZo6daoqVKggb29v9e3bV6mpqVk+Tr58+Zze22w2WZZ1S7Xb7XbZ7fZbGgMAAADAvY17GrPAzc1Nr7zyioYOHao///xT69evV6tWrfTss8+qUqVKioiI0P79+5328fT0VFpa2i0d19/fX0FBQdqyZYujLS0tTdu2bbulcQEAAADgRgiNWdSmTRu5u7vrjTfeUKlSpbRq1Spt2LBBe/fu1b///W+dOnXKqX94eLi+//57HT58WL///vt1Lye9nj59+mj8+PH65JNPlJCQoJdeeknnzp2TzWbLidMCAAAAgEwRGrPIw8NDvXv31sSJE/Wf//xHVatWVXR0tOrXr6/g4OAMX4HRv39/ubu7q3z58ipatKiOHj2areMOHDhQ7du3V6dOnRQVFSUfHx9FR0fLy8srB84KAAAAADJns271xjm4RHp6usqVK6e2bdtq9OjRN7VPUlKS/P39VanPm3K357/NFd6Ztr7WydUlAAAAAC53LRtcuHBBfn5+1+3Lg3DuEkeOHNFXX32levXqKSUlRTNmzFBiYqKeeeYZV5cGAAAAIA/j8tS7hJubm+Lj4/XQQw+pdu3a2rVrl77++muVK1fO1aUBAAAAyMNYabxLhIaGav369a4uAwAAAMA9hpVGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQAAAAAGBEaAQAAAABGhEYAAAAAgBGhEQAAAABgRGgEAAAAABgRGgEAAAAA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nPpL0qpVq4z9kXuyM5+4c2V3PidOnKjRo0dr5cqVql69em6UipuQU7+f6enpSklJuR0lIguyOp9ly5bVrl27tGPHDserZcuWatCggXbs2KHQ0NDcLB//kBO/n2lpadq1a5dCQkJuV5m4SdmZz9q1a+vnn392/GeOJO3fv18hISEExlvh6ifxIOcsWrTIstvtVnx8vPXTTz9ZPXr0sAICAqyTJ09almVZHTt2tAYNGuTov379esvDw8OaNGmStXfvXmvEiBFWvnz5rF27drnqFPA3WZ3PlJQUa/v27db27dutkJAQq3///tb27dutAwcOuOoU8DdZnc8JEyZYnp6e1tKlS60TJ044XhcvXnTVKeBvsjqf48aNs7766ivr4MGD1k8//WRNmjTJ8vDwsGbPnu2qU8DfZHU+/4mnp95ZsjqfsbGx1pdffmkdPHjQ2rp1q9WuXTvLy8vL2rNnj6tOAX+T1fk8evSo5evra/Xu3dtKSEiwPvvsMyswMNAaM2aMq04hTyA05jGvv/66VaJECcvT09OqUaOGtWnTJse2evXqWZ07d3bqv3jxYqt06dKWp6en9cADD1iff/55LleM68nKfCYmJlqSMrzq1auX+4UjU1mZz7CwsEznc8SIEblfODKVlfkcMmSIFRkZaXl5eVkFCxa0oqKirEWLFrmgaphk9e/PvyM03nmyMp99+/Z19A0KCrKaNWtmbdu2zQVVwySrv58bNmywatasadntdisiIsIaO3asdfXq1VyuOm+xWZZluWqVEwAAAABwZ+OeRgAAAACAEaERAAAAAGBEaAQAAAAAGBEaAQAAAABGhEYAAAAAgBGhEQAAAABgRGgEAAAAABgRGgEAAAAARoRGAAAAAIARoREAgNukS5cuat26tavLyNThw4dls9m0Y8cOV5cCALjDERoBALjHpKamuroEAMBdhNAIAEAuqF+/vvr06aO+ffuqYMGCCgoK0uzZs/XHH38oJiZGvr6+ioyM1IoVKxz7rF27VjabTZ9//rkqVqwoLy8vPfzww9q9e7fT2B9++KEeeOAB2e12hYeHa/LkyU7bw8PDNXr0aHXq1El+fn7q0aOHSpYsKUmqUqWKbDab6tevL0nasmWLGjdurCJFisjf31/16tXTtm3bnMaz2WyaM2eOnnjiCRUoUEClSpXSp59+6tRnz549evzxx+Xn5ydfX1/VqVNHBw8edGyfM2eOypUrJy8vL5UtW1YzZ8685c8YAHB7EBoBAMglb7/9tooUKaLNmzerT58+euGFF9SmTRvVqlVL27Zt02OPPaaOHTvq0qVLTvsNGDBAkydP1pYtW1S0aFG1aNFCV65ckSRt3bpVbdu2Vbt27bRr1y6NHDlSw4YNU3x8vNMYkyZNUqVKlbR9+3YNGzZMmzdvliR9/fXXOnHihD766CNJ0sWLF9W5c2f973//06ZNm1SqVCk1a9ZMFy9edBovNjZWbdu21Y8//qhmzZqpQ4cOOnv2rCTp+PHjqlu3rux2u7755htt3bpVzz33nK5evSpJWrBggYYPH66xY8dq7969GjdunIYNG6a33347xz9zAEAOsAAAwG3RuXNnq1WrVpZlWVa9evWsRx55xLHt6tWrlre3t9WxY0dH24kTJyxJ1saNGy3Lsqw1a9ZYkqxFixY5+pw5c8bKnz+/9cEHH1iWZVnPPPOM1bhxY6fjDhgwwCpfvrzjfVhYmNW6dWunPomJiZYka/v27dc9h7S0NMvX19davny5o02SNXToUMf75ORkS5K1YsUKy7Isa/DgwVbJkiWt1NTUTMe8//77rffff9+pbfTo0VZUVNR1awEAuAYrjQAA5JKKFSs6fnZ3d1fhwoVVoUIFR1tQUJAk6fTp0077RUVFOX4uVKiQypQpo71790qS9u7dq9q1azv1r127tg4cOKC0tDRHW/Xq1W+qxlOnTql79+4qVaqU/P395efnp+TkZB09etR4Lt7e3vLz83PUvWPHDtWpU0f58uXLMP4ff/yhgwcPqmvXrvLx8XG8xowZ43T5KgDgzuHh6gIAALhX/DNE2Ww2pzabzSZJSk9Pz/Fje3t731S/zp0768yZM5o2bZrCwsJkt9sVFRWV4eE5mZ3Ltbrz589vHD85OVmSNHv2bNWsWdNpm7u7+03VCADIXYRGAADucJs2bVKJEiUkSefOndP+/ftVrlw5SVK5cuW0fv16p/7r169X6dKlrxvCPD09JclpNfLavjNnzlSzZs0kSceOHdPvv/+epXorVqyot99+W1euXMkQLoOCglSsWDEdOnRIHTp0yNK4AADXIDQCAHCHGzVqlAoXLqygoCANGTJERYoUcXz/43/+8x899NBDGj16tJ5++mlt3LhRM2bMuOHTSAMDA5U/f36tXLlS9913n7y8vOTv769SpUrp3XffVfXq1ZWUlKQBAwZcd+UwM71799brr7+udu3aafDgwfL399emTZtUo0YNlSlTRrGxsXrxxRfl7++vJk2aKCUlRT/88IPOnTunfv36ZfdjAgDcJtzTCADAHW7ChAl66aWXVK1aNZ08eVLLly93rBRWrVpVixcv1qJFi/Tggw9q+PDhGjVqlLp06XLdMT08PDR9+nTNmjVLxYoVU6tWrSRJc+fO1blz51S1alV17NhRL774ogIDA7NUb+HChfXNN98oOTlZ9erVU7Vq1TR79mzHqmO3bt00Z84czZ8/XxUqVFC9evUUHx/v+BoQAMCdxWZZluXqIgAAQEZr165VgwYNdO7cOQUEBLi6HADAPYqVRgAAAACAEaERAAAAAGDE5akAAAAAACNWGgEAAAAARoRGAAAAAIARoREAAAAAYERoBAAAAAAYERoBAAAAAEaERgAAAACAEaERAAAAAGBEaAQAAAAAGP1/TcuD66gASRkAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train Mean Squared Error: 40281623.425488226\n", - "Train R2 Score: 0.9581963040734582\n" - ] - }, - { - "data": { - "image/png": "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alXcuHEDfn5+doyu6GAiSERERERERcLevXsRFhaGy5cvIzAwEBcvXoRarRaPMwnMPU4NJSIiIiIih3bnzh106dIFrVq1wuXLlwEAMTEx+Ouvv+wcWdHFRJCIiIiIiBxSRkYG5s2bh6CgIGzevFlsDw4OxvHjx9G+fXs7Rle0cWooERERERE5nD///BPDhw/H1atXxTZPT0/Mnz8fffv2hVTKMa2XwadHREREREQOZeHChWjTpo2YBEqlUoSFheHq1avo378/k8B8wCdIREREREQO5f3334dKpQIANG3aFKdOncLy5ctRqlQpO0dWfHBqKBERERER2VVCQgK8vb3F9xUqVMCCBQvg7u6Onj17QiKR2DG64omJIBERERER2cWNGzcwYsQInDlzBlFRUdBoNOKxYcOG2TGy4o9TQ4mIiIiIqFClpaVh2rRpqFGjBrZv3467d+9i9uzZ9g6rROGIIBERERERFQpBEPDLL79g5MiRuHXrltju5+eH+vXr2zGykocjgkREREREVOCuXr2Ktm3b4t133xWTQLlcjrFjxyIqKgqdO3e2c4QlC0cEiYiIiIiowKSmpmLWrFlYtGgRTCaT2B4SEoLly5cjKCjIjtGVXBwRJCIiIiKiApOUlIQVK1aISWBAQAC2bNmCXbt2MQm0IyaCRERERERUYPz9/TF16lQolUp8/PHHuHz5Mt577z2WhLAzJoJERERERJQvkpOTMXXqVOh0Opv2ESNG4OLFi5g9ezZcXFzsFB1lxTWCRERERET0UgRBwA8//IAxY8bg3r170Ov1WLJkiXhcqVSicuXK9guQsuGIIBERERERvbALFy6gZcuW6NGjB+7duwcA+PLLL5GYmGjnyOhZmAgSEREREVGeJSUlYcSIEahfvz4OHDggtrdv3x7nz5+Hh4eHHaOj5+HUUCIiIiIiyjWr1Ypvv/0W48aNQ0JCgtheqVIlLF26FO3atbNjdJRbTASJiIiIiChXBEFA+/bt8ccff4htarUakyZNwujRo6FSqewYHeUFp4YSEREREVGuSCQStGnTRnzfqVMnXL58GZMmTWISWMRwRJCIiIiIiHJktVphMBjg7Owstn344Yc4cOAABg4ciNatW9sxOnoZHBEkIiIiIqJsTpw4gcaNGyM8PNymXS6XY8uWLUwCizgmgkREREREJHrw4AEGDRqE4OBgnDhx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EhEREVGepaam4pdffhHfBwcHY+XKlWjQoIEdo3oxUqkEAR7O9g6DqFAVqc1iiIiIiMgxVKlSBWPGjIGXlxe++uorHD58uEgmgUQlFRNBIiIiInqmmJgYDBkyBOnptsXVJ02ahKtXr6Jfv36QSvnPSqKihP/FEhEREVGODAYDZs6cierVq2P16tWYN2+ezXFnZ2e4u7vbJzgieilMBImIiIgom99++w01a9bEtGnTYDAYAADffPNNtgLxRFQ0MREkIiIiItG1a9fw9ttv45133sGNGzcAADKZDOHh4Th37hycnJzsHCER5QfuGkpERERESEtLw9y5c7FgwQIYjUaxvWXLllixYgVq1qxpx+iIKL8xESQiIiIq4cxmMxo2bGhTFN7f3x+LFi1C586dIZGwph5RccOpoUREREQlnFwuR48ePQAACoUC48aNQ1RUFLp06cIkkKiY4oggERERUQmTkpICiUQCFxcXsW306NG4ceMGxo4di6CgIDtGR0SFgSOCRERERCWEIAjYvHkzqlevjhkzZtgcU6lUWLt2LZNAohKCiSARERFRCXDp0iWEhISgS5cu+Oeff7B48WJERUXZOywishMmgkRERETFmF6vx+jRo1G3bl3s3btXbH/zzTdZCoKoBOMaQSIiIqJiSBAEfP/99xg7dizu3bsntgcGBmLJkiVo3749N4IhKsGYCBIREREVM+fPn0dYWBgOHjwotqlUKkyYMAHjxo2DWq22Y3RE5AiYCBIREREVM7t377ZJAv/73/9i8eLFCAwMtGNURORIJIIgCPYOoqTQ6/XQarXQ6XRwc3OzdzhERERUTJlMJtStWxcmkwnLli3DW2+9Ze+QiOgJ9s4NOCJIREREVISdPn0ahw8fRlhYmNimUCjw22+/oWzZstwQhohyxF1DiYiIiIqgxMREfPjhh2jYsCFGjBiB8+fP2xyvVKkSk0AieiomgkRERERFiMViwRdffIGqVasiIiICgiDAarXis88+s3doRFSEMBEkIiIiKiKOHz+Oxo0bY9CgQXj48CEAwMXFBQsWLMCaNWvsHB0RFSVcI0hERETk4O7fv4+PP/4Ya9euRdZ9/rp164aFCxfC39/fjtERUVHERJCIiIjIgUVGRqJ58+ZISkoS22rWrIkVK1agZcuWdouLiIo2Tg0lIiIicmDVq1dHhQoVAABubm5YvHgx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JSeffDKnnnoqd999N11dXVx99dX7tb8xBkCLxoiIiIiI9HM9MUFPjHC4KRA8AJdeeilNTU388Ic/pL6+nkmTJvH888/vtoDMnsRiMQAtGiMiIiIiIkB3jFBUVHTYz2uZvgpB+yHP89i2bRsFBQVYlrXb9o6ODmpqati6dSuFhYV90ML+Tf3fd9T3fUd933fU931L/d931Pd9R33fd3rre2MMsViMgQMHYtuH/4k9jQgeRrZtM3jw4H3WKyws1D/OPqT+7zvq+76jvu876vu+pf7vO+r7vqO+7zsf7vu+GAnsocViRERERERE+hkFgiIiIiIiIv2MAsEjSCgU4rbbblPuwT6i/u876vu+o77vO+r7vqX+7zvq+76jvu87R2Lfa7EYERERERGRfkYjgiIiIiIiIv2MAkEREREREZF+RoGgiIiIiIhIP6NAUEREREREpJ9RIHgEuffeexk2bBjhcJipU6eyePHivm7SEe2OO+7glFNOoaCggIqKCi6++GLWrl2bU2fGjBlYlpXzuv7663PqbNmyhQsuuIBoNEpFRQW33HILjuPk1Hn55Zc56aSTCIVCjBo1ioceemi39vSn7+9HP/rRbv16/PHHZ7cnk0nmzJnDgAEDyM/P55JLLqGhoSHnGOr3gzNs2LDd+t6yLObMmQPomj/UXn31VS688EIGDhyIZVk8+eSTOduNMfzwhz+kurqaSCTCzJkzWbduXU6dlpYWLr/8cgoLCykuLuarX/0qnZ2dOXWWL1/O6aefTjgcpqamhrvuumu3tvzlL3/h+OOPJxwOM378eJ599tkDbsvRZG99n8lkmDt3LuPHjycvL4+BAwfy5S9/mW3btuUco7d/L3feeWdOHfX97vZ13V911VW79eu5556bU0fX/cHZV9/39vvfsix+9rOfZevouj84+3NfeSTd3+xPW/bJyBHhz3/+swkGg+aBBx4w7777rrnmmmtMcXGxaWho6OumHbFmzZplHnzwQbNy5UqzbNkyc/7555shQ4aYzs7ObJ0zzjjDXHPNNaauri77am9vz253HMeMGzfOzJw50yxdutQ8++yzpqyszNx6663ZOu+//76JRqPm5ptvNqtWrTL//u//bnw+n3n++eezdfrb93fbbbeZE088Madfm5qastuvv/56U1NTYxYsWGDefvtt84lPfMJ88pOfzG5Xvx+8xsbG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ydaZN28eY8aMoaSkJFtnb9/J/rTlWNMTBK5bt4758+czYMCAfe6zbNkybNvOTltU3x8aH3zwAdu3b8/5PaPr/uN1//33M2XKFCZOnLjPurru98++7iuPpPub/WnL/n5oOQL8+c9/NqFQyDz00ENm1apV5tprrzXFxcU5qw5JrtmzZ5uioiLz8ssv5yyRHI/HjTHGrF+/3tx+++3m7bffNhs3bjRPPfWUGTFihJk+fXr2GD3L/J5zzjlm2bJl5vnnnzfl5eW9LvN7yy23mNWrV5t7772312V++9P39+1vf9u8/PLLZuPGjWbhwoVm5syZpqyszDQ2Nhpjupc0HjJkiHnxxRfN22+/baZNm2amTZuW3V/9/tG4rmuGDBli5s6dm1Oua/7Qi8ViZunSpWbp0qUGMD//+c/N0qVLsytT3nnnnaa4uNg89dRTZvny5eaiiy7qNX3E5MmTzZtvvmlee+01M3r06Jxl9Nva2kxlZaW54oorzMqVK82f//xnE41Gd1vK3e/3m3/91381q1evNrfddluvS7nvqy1Hk731fTqdNp/5zGfM4MGDzbJly3L+BvSszPf666+bX/ziF2bZsmVmw4YN5uGHHzbl5eXmy1/+cvYc6vve7a3vY7GY+cd//EezaNEis3HjRjN//nxz0kknmdGjR5tkMpk9hq77g7Ov3znGdKd/iEaj5r777tttf133B29f95XGHFn3N/tqy/5QIHgE+fd//3czZMgQEwwGzamnnmreeOONvm7SEQ3o9fXggw8aY4zZsmWLmT59uiktLTWhUMiMGjXK3HLLLTk51YwxZtOmTea8884zkUjElJWVmW9/+9smk8nk1HnppZfMpEmTTDAYNCNGjMieY1f96fu79NJLTXV1tQkGg2bQoEHm0ksvNevXr89uTyQS5utf/7opKSkx0WjUfPaznzV1dXU5x1C/H7wXXnjBAGbt2rU55brmD72XXnqp198zV155pTGmewn1H/zgB6aystKEQiFz9tln7/a9bN++3Vx22WUmPz/fFBYWmquvvtrEYrGcOu+88475h3/4BxMKhcygQYPMnXfeuVtbHnvsMXPccceZYDBoTjzxRPPMM8/kbN+fthxN9tb3Gzdu3OPfgJ6cmkuWLDFTp041RUVFJhwOmxNOOMH89Kc/zQlWjFHf92ZvfR+Px80555xjysvLTSAQMEOHDjXXXHPNbv8RSNf9wdnX7xxjjPntb39rIpGIaWtr221/XfcHb1/3lcYcWfc3+9OWfbF2fHARERERERHpJ/SMoIiIiIiISD+jQFBERERERKSfUSAoIiIiIiLSzygQFBERERER6WcUCIqIiIiIiPQzCgRFRERERET6GQWCIiIiIiIi/YwCQRERERERkX5GgaCIiMhhZlkWTz755CE/7rBhw7j77rsP+XFFROTYo0BQRESOWYsWLcLn83HBBRcc8L59GVRdddVVWJaFZVkEg0FGjRrF7bffjuM4e93vrbfe4tprrz1MrRQRkaOZAkERETlm3X///XzjG9/g1VdfZdu2bX3dnANy7rnnUldXx7p16/j2t7/Nj370I372s5/1WjedTgNQXl5ONBo9nM0UEZGjlAJBERE5JnV2dvLoo48ye/ZsLrjgAh566KHd6vzv//4vp5xyCuFwmLKyMj772c8CMGPGDDZv3sy3vvWt7MgcwI9+9CMmTZqUc4y7776bYcOGZd+/9dZbfOpTn6KsrIyioiLOOOMM/v73vx9w+0OhEFVVVQwdOpTZs2czc+ZM/vrXvwLdI4YXX3wxP/nJTxg4cCBjxowBdh/FbGtr47rrrqOyspJwOMy4ceN4+umns9tfe+01Tj/9dCKRCDU1Ndx44410dXUdcFtFROToo0BQRESOSY899hjHH388Y8aM4Utf+hIPPPAAxpjs9meeeYbPfvaznH/++SxdupQFCxZw6qmnAvD4448zePBgbr/9durq6qirq9vv88ZiMa688kpee+013njjDUaPHs35559PLBb7SJ8nEolkR/4AFixYwNq1a5k3b15OcNfD8zzOO+88Fi5cyMMPP8yqVau488478fl8AGzYsIFzzz2XSy65hOXLl/Poo4/y2muvccMNN3ykdoqIyNHB39cNEBER+Tjcf//9fOlLXwK6p1m2t7fzyiuvMGPGDAB+8pOf8IUvfIEf//jH2X0mTpwIQGlpKT6fj4KCAqqqqg7ovGeddVbO+9/97ncUFxfzyiuv8OlPf/qAP4cxhgULFvDCCy/wjW98I1uel5fH73//e4LBYK/7zZ8/n8WLF7N69WqOO+44AEaMGJHdfscdd3D55Zdz0003ATB69Gh+9atfccYZZ3DfffcRDocPuK0iInL00IigiIgcc9auXcvixYu57LLLAPD7/Vx66aXcf//92TrLli3j7LPPPuTnbmho4JprrmH06NEUFRVRWFhIZ2cnW7ZsOaDjPP300+Tn5xMOhznvvPO49NJL+dGPfpTdPn78+D0GgdD9+QYPHpwNAj/snXfe4aGHHiI/Pz/7mjVrFp7nsXHjxgNqq4iIHH00IigiIsec+++/H8dxGDhwYLbMGEMoFOKee+6hqKiISCRywMe1bTtneilAJpPJeX/llVeyfft2fvnLXzJ06FBCoRDTpk3Lmda5P84880zuu+8+gsEgAwcOxO/P/ZOdl5e31/339fk6Ozu57rrruPHGG3fbNmTIkANqq4iIHH0UCIqIyDHFcRz+8z//k3/7t3/jnHPOydl28cUX88gjj3D99dczYcIEFixYwNVXX93rcYLBIK7r5pSVl5dTX1+PMSa7gMyyZcty6ixcuJBf//rXnH/++QBs3bqV5ubmA/4ceXl5jBo16oD36zFhwgQ++OAD3nvvvV5HBU866SRWrVr1kc4hIiJHL00NFRGRY8rTTz9Na2srX/3qVxk3blzO65JLLslOD73tttt45JFHuO2221i9ejUrVqzgX/7lX7LHGTZsGK+++iq1tbXZQG7GjBk0NTVx1113sWHDBu69916ee+65nPOPHj2a//qv/2L16tW8+eabXH755Qc1+vhRnXHGGUyfPp1LLrmEefPmsXHjRp577jmef/55AObOncvrr7/ODTfcwLJly1i3bh1PPfWUFosREeknFAiKiMgx5f7772fmzJkUFRXttu2SSy7h7bffZvny5cyYMYO//OUv/PWvf2XSpEmcddZZLF68OFv39ttvZ9OmTYwcOZLy8nIATjjhBH79619z7733MnHiRBYvXsw//uM/7nb+1tZWTjrpJK644gpuvPFGKioqPt4PvQf/8z//wymnnMJll13G2LFj+c53vpMd5ZwwYQKvvPIK7733HqeffjqTJ0/mhz/8Yc50WhEROXZZ5sMPO4iIiIiIiMgxTSOCIiIiIiIi/YwCQRERERERkX5GgaCIiIiIiEg/o0BQRERERESkn1EgKCIiIiIi0s8oEBQREREREelnFAiKiIiIiIj0MwoERURERERE+hkFgiIiIiIiIv2MAkEREREREZF+RoGgiIiIiIhIP/P/A3eZToyU9UseAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.ensemble import RandomForestRegressor\n", - "from sklearn.metrics import mean_squared_error, r2_score\n", - "from sklearn.model_selection import cross_val_score\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import featuretools as ft\n", - "import re\n", - "\n", - "# Загрузка данных\n", - "df = pd.read_csv(\"..//static//csv//mobile phone price prediction.csv\")\n", - "\n", - "# Преобразование столбца Battery в числовой формат\n", - "df['Battery'] = df['Battery'].apply(lambda x: int(re.search(r'\\d+', x).group()) if re.search(r'\\d+', x) else None)\n", - "\n", - "# Преобразование столбца Display в числовой формат\n", - "df['Camera'] = pd.to_numeric(df['Camera'], errors='coerce')\n", - "df['Display'] = pd.to_numeric(df['Display'], errors='coerce')\n", - "df['Inbuilt_memory'] = pd.to_numeric(df['Inbuilt_memory'], errors='coerce')\n", - "df['fast_charging'] = pd.to_numeric(df['fast_charging'], errors='coerce')\n", - "\n", - "# Удаление запятых из столбца Price и преобразование в числовой формат\n", - "df['Price'] = df['Price'].str.replace(',', '').astype(float)\n", - "\n", - "# Удаление столбцов с текстовыми значениями, которые не могут быть преобразованы в числа\n", - "df = df.drop(columns=['Name', 'company', 'Android_version', 'Processor_name', 'External_Memory', 'No_of_sim', 'Ram', 'Screen_resolution', 'Processor' ])\n", - "# Разделение на обучающую и тестовую выборки (например, 70% обучающая, 30% тестовая)\n", - "train_df, test_df = train_test_split(df, test_size=0.3, random_state=42)\n", - "\n", - "# Разделение обучающей выборки на обучающую и контрольную (например, 70% обучающая, 30% контрольная)\n", - "train_df, val_df = train_test_split(train_df, test_size=0.3, random_state=42)\n", - "\n", - "# Вывод размеров выборок\n", - "print(\"Размер обучающей выборки:\", len(train_df))\n", - "print(\"Размер контрольной выборки:\", len(val_df))\n", - "print(\"Размер тестовой выборки:\", len(test_df))\n", - "\n", - "# Определение сущностей\n", - "es = ft.EntitySet(id='mobile_data')\n", - "es = es.add_dataframe(dataframe_name='mobile', dataframe=train_df, index='id')\n", - "\n", - "# Генерация признаков с уменьшенной глубиной\n", - "feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name='mobile', max_depth=1)\n", - "\n", - "# Преобразование признаков для контрольной и тестовой выборок\n", - "val_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=val_df.index)\n", - "test_feature_matrix = ft.calculate_feature_matrix(features=feature_defs, entityset=es, instance_ids=test_df.index)\n", - "\n", - "# Удаление строк с NaN\n", - "feature_matrix = feature_matrix.dropna()\n", - "val_feature_matrix = val_feature_matrix.dropna()\n", - "test_feature_matrix = test_feature_matrix.dropna()\n", - "\n", - "# Разделение данных на обучающую и тестовую выборки\n", - "X_train = feature_matrix.drop('Price', axis=1)\n", - "y_train = feature_matrix['Price']\n", - "X_val = val_feature_matrix.drop('Price', axis=1)\n", - "y_val = val_feature_matrix['Price']\n", - "X_test = test_feature_matrix.drop('Price', axis=1)\n", - "y_test = test_feature_matrix['Price']\n", - "\n", - "# Выбор модели\n", - "model = RandomForestRegressor(random_state=42)\n", - "\n", - "# Обучение модели\n", - "model.fit(X_train, y_train)\n", - "\n", - "# Предсказание и оценка\n", - "y_pred = model.predict(X_test)\n", - "\n", - "mse = mean_squared_error(y_test, y_pred)\n", - "r2 = r2_score(y_test, y_pred)\n", - "\n", - "print(f\"Mean Squared Error: {mse}\")\n", - "print(f\"R2 Score: {r2}\")\n", - "\n", - "# Кросс-валидация\n", - "scores = cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error')\n", - "mse_cv = -scores.mean()\n", - "print(f\"Cross-validated Mean Squared Error: {mse_cv}\")\n", - "\n", - "# Анализ важности признаков\n", - "feature_importances = model.feature_importances_\n", - "feature_names = X_train.columns\n", - "\n", - "importance_df = pd.DataFrame({'Feature': feature_names, 'Importance': feature_importances})\n", - "importance_df = importance_df.sort_values(by='Importance', ascending=False)\n", - "\n", - "plt.figure(figsize=(10, 6))\n", - "sns.barplot(x='Importance', y='Feature', data=importance_df)\n", - "plt.title('Feature Importance')\n", - "plt.show()\n", - "\n", - "# Проверка на переобучение\n", - "y_train_pred = model.predict(X_train)\n", - "\n", - "mse_train = mean_squared_error(y_train, y_train_pred)\n", - "r2_train = r2_score(y_train, y_train_pred)\n", - "\n", - "print(f\"Train Mean Squared Error: {mse_train}\")\n", - "print(f\"Train R2 Score: {r2_train}\")\n", - "\n", - "# Визуализация результатов\n", - "plt.figure(figsize=(10, 6))\n", - "plt.scatter(y_test, y_pred, alpha=0.5)\n", - "plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2)\n", - "plt.xlabel('Actual Price')\n", - "plt.ylabel('Predicted Price')\n", - "plt.title('Actual vs Predicted Price')\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aimenv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/lab_8/lab8.ipynb b/lab_8/lab8.ipynb new file mode 100644 index 0000000..e3b23d0 --- /dev/null +++ b/lab_8/lab8.ipynb @@ -0,0 +1,55 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Лабораторная работа 8 ##" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from docx import Document\n", + "import os\n", + "\n", + "def read_docx(file_path):\n", + " doc = Document(file_path)\n", + " full_text = []\n", + " for paragraph in doc.paragraphs:\n", + " full_text.append(paragraph.text)\n", + " return \"\\n\".join(full_text)\n", + "\n", + "def load_docs(dataset_path):\n", + " df = pd.DataFrame(columns=[\"doc\", \"text\"])\n", + " for file_path in os.listdir(dataset_path):\n", + " if file_path.startswith(\"~$\"):\n", + " continue\n", + " text = read_docx(dataset_path + file_path)\n", + " df.loc[len(df.index)] = [file_path, text]\n", + " return df\n", + "\n", + "# Загрузка данных\n", + "df = load_docs(\"data/text/\")\n", + "df[\"type\"] = df.apply(\n", + " lambda row: 0 if str(row[\"doc\"]).startswith(\"tz_\") else 1, axis=1\n", + ")\n", + "df.info()\n", + "df.sort_values(by=[\"doc\"], inplace=True)\n", + "\n", + "display(df.head(), df.tail())" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- 2.25.1 From ccbcaca3210fab671be695f88ab91aa624dcc634 Mon Sep 17 00:00:00 2001 From: "a.puchkina" Date: Sat, 22 Feb 2025 12:57:09 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D1=80=D0=B0=D0=B7!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab_8/lab8.ipynb | 433 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 407 insertions(+), 26 deletions(-) diff --git a/lab_8/lab8.ipynb b/lab_8/lab8.ipynb index e3b23d0..80b81c7 100644 --- a/lab_8/lab8.ipynb +++ b/lab_8/lab8.ipynb @@ -7,47 +7,428 @@ "## Лабораторная работа 8 ##" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Загрузка данных из .doc файлов:" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Загружено 41 документов.\n" + ] + } + ], + "source": [ + "import os\n", + "import win32com.client\n", + "\n", + "# Укажите правильный путь к папке с файлами\n", + "data_path = os.path.abspath(\"..//static//csv//tz_itdocs\")\n", + "\n", + "# Проверка существования папки\n", + "if not os.path.exists(data_path):\n", + " raise FileNotFoundError(f\"Папка {data_path} не найдена.\")\n", + "\n", + "# Инициализация Word\n", + "word = win32com.client.Dispatch(\"Word.Application\")\n", + "word.Visible = False # Используйте свойство Visible с заглавной буквы\n", + "\n", + "# Чтение всех .doc файлов\n", + "texts = []\n", + "for filename in os.listdir(data_path):\n", + " if filename.endswith(\".doc\"):\n", + " file_path = os.path.join(data_path, filename)\n", + " try:\n", + " # Открытие документа\n", + " doc = word.Documents.Open(file_path)\n", + " text = doc.Content.Text\n", + " texts.append(text)\n", + " doc.Close(SaveChanges=False) # Закрыть без сохранения изменений\n", + " except Exception as e:\n", + " print(f\"Ошибка при чтении файла {filename}: {e}\")\n", + "\n", + "# Закрытие Word\n", + "word.Quit()\n", + "\n", + "# Вывод результата\n", + "print(f\"Загружено {len(texts)} документов.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Предобработка текста:" + ] + }, + { + "cell_type": "code", + "execution_count": 97, "metadata": {}, "outputs": [], "source": [ - "import pandas as pd\n", - "from docx import Document\n", - "import os\n", + "stop_words = set(stopwords.words('russian'))\n", + "lemmatizer = WordNetLemmatizer()\n", "\n", - "def read_docx(file_path):\n", - " doc = Document(file_path)\n", - " full_text = []\n", - " for paragraph in doc.paragraphs:\n", - " full_text.append(paragraph.text)\n", - " return \"\\n\".join(full_text)\n", + "def preprocess_text(text):\n", + " # Удаление спецсимволов\n", + " text = re.sub(r'\\W', ' ', text)\n", + " # Приведение к нижнему регистру\n", + " text = text.lower()\n", + " # Удаление стоп-слов и лемматизация\n", + " tokens = [lemmatizer.lemmatize(word) for word in text.split() if word not in stop_words]\n", + " return ' '.join(tokens)\n", "\n", - "def load_docs(dataset_path):\n", - " df = pd.DataFrame(columns=[\"doc\", \"text\"])\n", - " for file_path in os.listdir(dataset_path):\n", - " if file_path.startswith(\"~$\"):\n", - " continue\n", - " text = read_docx(dataset_path + file_path)\n", - " df.loc[len(df.index)] = [file_path, text]\n", - " return df\n", + "# Применение предобработки к каждому документу\n", + "texts = [preprocess_text(text) for text in texts]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Векторизация текста" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "vectorizer = TfidfVectorizer(max_features=1000)\n", + "X = vectorizer.fit_transform(texts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Кластеризация с использованием K-means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1kAAAK9CAYAAADWo6YTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXwklEQVR4nOzde1xUdf7H8fcBFAQFJLmooeKlVbykYpiWmSsqXbSLq13XS3YzrUxrw3bL7CK5aWlmZtaqrXZV1zU1xEv+rM0kRSpTWzXUUm5mgkCKzpzfH8Ss4wAyeBAGX8/Hg0fNme+c85kZGHnz/Z7PMUzTNAUAAAAAsIRXdRcAAAAAALUJIQsAAAAALETIAgAAAAALEbIAAAAAwEKELAAAAACwECELAAAAACxEyAIAAAAACxGyAAAAAMBChCwAAAAAsBAhCwAAAAAsRMjCRW3BggUyDMPpKywsTH369NGnn35a3eUBAIBK2r9/v9O/797e3mrWrJluueUWpaWluYw/ceKEXn31VXXv3l1BQUHy8/PTZZddprFjx+q///1vqcf4y1/+IsMwdNttt1Xxs4GnMUzTNKu7CKC6LFiwQCNHjtRzzz2nqKgomaaprKwsLViwQN9//70++eQT3XjjjdVdJgAAcNP+/fsVFRWlO+64Q9dff71sNpt27dqlOXPm6OTJk/rqq6/UuXNnSdKRI0cUHx+vbdu26cYbb1RcXJzq16+vH374QR988IEyMzNVVFTktH/TNNWsWTP5+PgoKytLWVlZatCgQTU8U9REPtVdAFATXHfdderWrZvj9qhRoxQeHq7333+fkAUAgAfr2rWr7r77bsftq666SoMGDdKcOXM0d+5cSdKIESO0fft2LVmyRIMHD3Z6/PPPP6+//vWvLvvduHGjfv75Z23YsEEDBgzQsmXLNHz48Kp9MvAYLBcEShEcHKx69erJx+d/f4coWXawYMECp7FjxoyRYRgaMWKEY9uyZcsUGxurkJAQ1atXT23bttXUqVNVMnH82WefyTAM/etf/3I59nvvvSfDMLR582ZJ0rfffqsRI0aoZcuW8vPzU0REhO655x798ssvpdbeokULlyWQhmFo48aNTmPOrFeSPv74YxmGoRYtWji2/fDDD/rjH/+oiIgI+fr6KjIyUg8++KCOHj3qGFNUVKRnnnlGMTExCgoKUkBAgHr16qXPPvvMaf8lr9+0adNcau7QoYOuvfZap23XXnuty7avv/7a8XzOlJ+frwkTJqhly5aqU6eO0/M+cuRIqa9Tecd58cUX5eXlpffee6/U51Da15mmTZumnj176pJLLlG9evUUExOjJUuWlHr8RYsWKTY2Vv7+/mrYsKGuueYaJScnSyr7vSz5OvO9stvtmjFjhtq3by8/Pz+Fh4frgQce0K+//up0vBYtWujGG29UcnKyOnfuLD8/P0VHR2vZsmVO40qW0u7fv9/pGJ06dXL5OXj22WcVHR2t+vXrKzAwUFdeeaWWL1/utL/PP/9cQ4YMUbNmzRzfS4899ph+++03p3EjRoxQ/fr1XV6nJUuWuHwfb9y40WWbJN1www0yDEPPPvusU42lfd9ERESUuo8zlTy2vK8zH79lyxbFx8crKChI/v7+6t27t/7zn/+Uus8zffbZZ/L19dWDDz7otP3QoUMaNWqUmjRpIl9fX0VFRWn06NEqKioqdcnz2V9nvlcbNmxQr169FBAQoODgYN10003atWtXuc+3QYMGio2NdXlPy1JevWVx5/NVko4dO6bHHntMLVq0kK+vry699FINGzbM8fNe8r1R1tfZ+/vxxx81ZMgQhYSEyN/fX1deeaVWrVpVaq0jRowodZ9nfr+V9X18tptuukktWrSQn5+fwsLCNGjQIH333XdOY06fPq3nn39erVq1kq+vr1q0aKGnnnpKJ0+edBp35ueFl5eXIiIidNttt+ngwYNO4yr6+WQYhsaOHeuy/cYbb3T67KnMezdu3DhFRkbK19dXrVu31tSpU2W32132aRiGy/fdiRMn1LBhwzL/PamIP/7xj5Kk9PR0ScU/s6tWrdKoUaNcApYk+fr6lnqsxYsXKzo6Wn369FFcXJwWL15cqXpQOzGTBUjKzc3VkSNHZJqmsrOzNWvWLOXn5zv95as0e/fu1bx581y25+XlqXv37ho+fLjq1KmjpKQkJSQkyMfHRxMmTNC1116ryMhILV68WLfccovTYxcvXqxWrVqpR48ekqS1a9fqxx9/1MiRIxUREaHvv/9eb731lr7//nt99dVXLr+oSVKvXr10//33S5J27dqlKVOmlPs8Tp8+Xepf6QoKCnTppZdq4MCBCgwM1I4dOzR79mwdOnRIn3zyieO5vv3227rjjjt033336fjx43rnnXc0YMAApaSkOJZiWOHJJ58sdfsTTzyhN998U6NGjdJVV12lOnXqaNmyZaWG2HOZP3++/va3v2n69Om68847Sx1z//33q1evXpJU6nFmzpypQYMG6a677lJRUZE++OADDRkyRCtXrtQNN9zgGDd58mQ9++yz6tmzp5577jnVrVtXW7Zs0YYNG9S/f3/NmDFD+fn5kv73Pj711FNq166dJDn9EvfAAw84lr8+8sgjSk9P1+uvv67t27frP//5j+rUqeMYu2fPHt1222168MEHNXz4cM2fP19DhgxRUlKS+vXrV+Zr889//tPlF0Cp+PvklltuUYsWLfTbb79pwYIFGjx4sDZv3qzY2FhJxSG+sLBQo0eP1iWXXKKUlBTNmjVLP//8sz7++ONy3xN3bNq0SatXr67Q2OnTpysrK+uc42699Va1bt3acfuxxx5Tu3btHD9jkhzvyYYNG3TdddcpJiZGkyZNkpeXl+bPn68//vGP+vzzzx2vx9m++eYb3Xzzzbr++us1e/Zsx/bDhw8rNjZWx44d0/3336+2bdvq0KFDWrJkiQoLC3XNNdfon//8p2P8iy++KElOP889e/aUJK1bt07XXXedWrZsqWeffVa//fabZs2apauuukqpqalOvzhLcuz3yJEjeuONNzRkyBDt2LFDf/jDH8p8rc5Vb926dct9rc9U1udrfn6+evXqpV27dumee+5R165ddeTIEa1YsUI///yzGjVq5Bj7yCOP6IorrnB6/L333ut0OysrSz179lRhYaEeeeQRXXLJJVq4cKEGDRqkJUuWuHxGS1KjRo306quvOm7/+c9/rvDzOtv999+viIgIHT58WK+//rri4uKUnp4uf39/R70LFy7Un/70J02YMEFbtmxRYmKidu3a5fLZU/LZb7fbtWPHDs2YMUOHDx/W559/7hhT0c+n81HWe1dYWKjevXvr0KFDeuCBB9SsWTN9+eWXmjhxojIyMjRjxgyn8X5+fpo/f75uvvlmx7Zly5bpxIkT51Xfvn37JEmXXHKJJGnFihWS3HsfT548qaVLl2rChAmSpDvuuEMjR45UZmamIiIizqs+1BImcBGbP3++Kcnly9fX11ywYIHT2PT0dFOSOX/+fMe2oUOHmh06dDAjIyPN4cOHl3us6Oho88Ybb3Tcnjhxounr62seO3bMsS07O9v08fExJ02a5NhWWFjosq/333/flGRu2rTJ5b6mTZuaI0eOdNz+7LPPTEnmZ5995tjWvHlzp3rfeOMN09fX1+zTp4/ZvHnzcp/HQw89ZNavX99x+/Tp0+bJkyedxvz6669meHi4ec899zi2lbx+L7/8sss+27dvb/bu3dtpW+/evZ22rV692pRkxsfHm2d/dDVu3NgcMGCA07ZJkyaZksycnJxyn8+Zx1m1apXp4+NjTpgwodSxe/bsMSWZCxcudDnOmc5+z4qKiswOHTqYf/zjH5325eXlZd5yyy2mzWZzGm+3212OXdr7WOLzzz83JZmLFy922p6UlOSyvXnz5qYkc+nSpY5tubm5ZuPGjc0uXbo4tpX8bKSnp5umaZonTpwwmzVrZl533XUuPwdny87ONiWZ06ZNK/M1MU3TTExMNA3DMA8cOODYNnz4cDMgIMBl7Mcff+zy/Et7Tbp37+6o8cyfo7Pfp+zsbLNBgwaOsaW9rmU5++enhN1uN9u0aWMOGDDA6T0sLCw0o6KizH79+pVaz/79+83GjRubV199tfnbb7857XPYsGGml5eX+fXXX5d6vLOd/XNzps6dO5thYWHmL7/84tj2zTffmF5eXuawYcNKra1EcnKyKcn86KOPSt13Zest4c7n6zPPPGNKMpctW1bmMUq+Nz7++GOXMQEBAU77GzdunCnJ/Pzzzx3bjh8/bkZFRZktWrRw+fm86667zKioKKdtZ3+/lfV9fC4fffSRKcncunWraZqmmZaWZkoy7733Xqdxjz/+uCnJ3LBhg2Nbad+Xd955p+nv7++0rSKfTyXPacyYMS413nDDDU7/Trjz3j3//PNmQECA+d///tdpnwkJCaa3t7d58OBBp33ecccdpo+Pj5mZmekY27dvX/POO+8s89+TM5XsZ/LkyWZOTo6ZmZlpbty40ezSpYvT5+Att9xiSjJ//fXXcvd3piVLlpiSzD179pimaZp5eXmmn5+f+eqrr1Z4H6jdWC4ISJo9e7bWrl2rtWvXatGiRerTp4/uvfdelyVUZ9q2bZs+/vhjJSYmysur9B+lI0eO6Oeff9aCBQu0d+9eXXPNNY77hg0bppMnTzot0/jwww91+vRppxm0evXqOf7/xIkTOnLkiK688kpJUmpqqssxi4qK5OvrW+HnXlhYqOeee05jx45Vs2bNSh2Tm5urrKwsrV+/XqtWrXJ6Ht7e3o6/Ttvtdh09elSnT59Wt27dSq2vMkzT1MSJEzV48GB1797d5f7jx487/iJZWSkpKRo6dKgGDx6sl19+udQxJcudzvX6nvme/frrr8rNzVWvXr2cXo/ly5fLbrfrmWeecfn+KW12sjwff/yxgoKC1K9fPx05csTxFRMTo/r167ss3WzSpInTX+cDAwM1bNgwbd++XZmZmaUeY/bs2frll180adKkUu8/deqUjhw5on379umll16Sl5eXrrrqKsf9Z74mBQUFOnLkiHr27CnTNLV9+3a3nm9Zli1bpq+//lovvfTSOcc+//zzCgoK0iOPPGLJsSUpLS1Ne/bs0Z133qlffvnF8T4UFBSob9++2rRpk9OSKEn65ZdfNGDAADVo0EArVqyQn5+f4z673a7ly5dr4MCBTueMlnDn+yQjI0NpaWkaMWKEQkJCHNs7deqkfv36lTr7V1L/rl279OabbyogIMDx2VMaK+st7/N16dKluvzyy0udYXL3Z0eSVq9erdjYWF199dWObfXr19f999+v/fv3a+fOnU7j3fmMLXkNy5t5KSws1JEjR5SWlqZ58+YpPDxcl112maM2SRo/frzTY0pmT85e0njy5EkdOXJE2dnZWrt2rTZs2KC+ffs6janI51OJkn9zzvw6depUuc+5vPfu448/Vq9evdSwYUOnfcbFxclms2nTpk1O47t27ar27ds7ZlUPHDigzz77zGUJ4rlMmjRJoaGhioiI0LXXXqt9+/Zp6tSpuvXWWyUVr8iQ5FbTisWLF6tbt26OWe4GDRrohhtuYMkgHAhZgKTY2FjFxcUpLi5Od911l1atWqXo6GiNHTu2zPMIEhIS1KtXrzIbY5w4cUKhoaGKjIzUPffcoyeeeEJPPPGE4/62bdvqiiuucPpAXrx4sa688kqnpUlHjx7Vo48+qvDwcNWrV0+hoaGKioqSVBx+zpabm1uhcwFKvPLKKzpx4oSeeuqpMscMGDBAERERiouLU7t27fThhx863b9w4UJ16tRJfn5+uuSSSxQaGqpVq1aVWl9lLF68WN9//32Zyx579Oihf/3rX1qyZIkyMjJ05MgRFRYWVnj/hw4d0g033KCCggL98ssvZf6iduzYMUk65+u7cuVKXXnllfLz81NISIhCQ0M1Z84cp9dj37598vLyUnR0dIXrLMuePXuUm5ursLAwhYaGOn3l5+crOzvbaXzr1q1dnmPJL3VnnoNVIjc3V1OmTNH48eMVHh5eag3r169XaGioWrdurbfffltLlixx+oX84MGDjl/w69evr9DQUPXu3dux//Nls9n01FNP6a677lKnTp3KHZuenq65c+dq8uTJTqHmfO3Zs0eSNHz4cJf34e2339bJkyddnuuNN96oH374QceOHXOcs1kiJydHeXl56tChw3nXduDAAUkqdalfu3btHGHwTCW1R0dHa926dVq8eLEiIyPLPIaV9Zb3+bpv3z5LjlHiwIEDZb4uJfef6dixYxX6jC0oKHC8hvXq1VOzZs00c+ZMl3HPPfecQkND1aVLF+3fv18bN250/LJ/4MABeXl5Of2bIEkREREKDg52qe2DDz5QaGiowsPD1b9/f0VGRurtt992GlORz6cS77zzjsv3csk5o2Up773bs2ePkpKSXPYZFxcnSS6fVZI0cuRIzZ8/X1LxuaI9e/ZUmzZtyq3hbPfff7/Wrl2r9evXa9u2bcrOztZf/vIXx/2BgYGSiv9gVxHHjh3T6tWr1bt3b+3du9fxddVVV2nr1q1ltnvHxYVzsoBSeHl5qU+fPpo5c6b27Nmj9u3bO92fnJysdevWOZpTlKZu3bpau3atCgsL9fnnn2vq1KmKjIzUAw884BgzbNgwPfroo/r5558d7WRff/11p/0MHTpUX375pZ544gl17txZ9evXl91uV3x8vMtfxY8ePaqioqIKrwc/cuSIXn75ZU2cONHpr9tnmzVrlo4cOaKdO3cqMTFRDz74oBYtWiSpuHHDiBEjdPPNN+uJJ55QWFiYvL29lZiY6Fj3fj6Kior09NNPa9SoUY4gcLa33npLd9xxh4YMGVKpY+zdu1ddu3bVq6++qj//+c9auHBhqR2iSmZ5ynt9P//8cw0aNEjXXHON3njjDTVu3Fh16tTR/PnzXRppWMVutyssLKzMv6CGhoae1/6nTp0qLy8vPfHEE2U2XLniiiu0du1a/frrr1q0aJHuueceRUZGqlu3brLZbOrXr5+OHj2qJ598Um3btlVAQIAOHTqkESNGuHwfV8Y777yj/fv3a82aNecc+9e//lVt2rTR8OHDnc5VOV8lz+Pll18u81zEs3853717tz799FMNHTpUEyZMcPwyWROsXbtWUnFYWLp0qYYOHaqVK1eWe96eFSry+VqdMjMz1bx583OO8/Pzc5y7evz4cf3jH//QuHHj1LhxYw0dOtQx7t5771Xfvn31888/69VXX9XgwYP15ZdfKigoyDGmojN0/fv3d/wx7+eff9bUqVPVp08fbd26VfXq1XP78+mmm25yaX7xt7/9rcwZ73O9d3a7Xf369XMKOGcq7TP+7rvv1l/+8hd99dVXWrhwof72t7+V+xqUpk2bNo4gV5q2bdtKkr777jvH+bbl+fjjj3Xy5ElNnz5d06dPd7l/8eLFmjx5stt1onYhZAFlOH36tCQ5Gg+UME1TCQkJuuWWW8pdOuPl5eX4UB80aJCOHj2qZ555xilk3X777Ro/frzef/99/fbbb6pTp47TBQ1//fVXrV+/XpMnT9Yzzzzj2F7yF/OzlSxrKfkL7Lm88MILatCggR599NFyx5WcOH7dddcpLCxMw4YN01//+le1a9dOS5YsUcuWLbVs2TKnXwTKWlbmrjfeeEPZ2dlOnbvO1qJFCy1atEgdO3bUPffco5tvvlnvvvuuU0OA8jRu3FirV69WeHi4/v3vf2vChAm6/vrrXcLJzp07ZRhGuSf+L126VH5+flqzZo3TkqKzf3lu1aqV7Ha7du7ced7NQVq1aqV169bpqquucloKVJa9e/fKNE2n96vkL69nNz84fPiwZs6cqcTERDVo0KDMkHXJJZc4vt8HDx6sP/zhD3r55Zf14Ycf6rvvvtN///tfLVy4UMOGDXM8puSX+PNVWFioyZMn66GHHjrnL7/bt2/XBx98oOXLl8vb29uS45do1aqVpOK/ipf3C92ZVqxYoV69eikxMVFjx47V3Xff7VjeFRoa6mg4c75KXpcffvjB5b7du3erUaNGCggIcNp+5nO46aabtGXLFk2bNq3MkGVFvRX5fG3VqpUlr0mJ5s2bl/m6lNxf4tSpU9q7d6/i4+PPuV9vb2+n1/CGG25QSEiIkpKSnEJW69atHTNVcXFxatasmd577z2NHj1azZs3l91u1549e5w+17OysnTs2DGX7/fGjRs7HfMPf/iDevbsqeXLl+uOO+6o8OdTiUsvvdTle3nGjBmlhqyKvnf5+fkV/vmQij9bBg0apAceeEDZ2dkaOnToObvGumvgwIFKTEzUokWLKhSyFi9erA4dOpT679zcuXP13nvvEbLAckGgNKdOnVJycrLq1q3rElg++OADffvtt0pMTHRrn0eOHHFpuduoUSNdd911WrRokRYvXqz4+HinzlglvwSevYzo7A5MZ9ZWt25dp3MLyrJ//37NmTNHzz77bIV+MT/zeUhyPJfSatyyZYslf4U+fvy4XnzxRT322GPlzh6dPn1ad911l9q3b69XX31VcXFxatmyZYWPc9lllzmWwc2aNUt2u90leJ4+fVpLly5VbGxsuUuFvL29ZRiGbDabY9v+/ftd2hDffPPN8vLy0nPPPecyk3P2+30uQ4cOlc1m0/PPP+9y3+nTpx3LHEscPnzYqStZXl6e3n33XXXu3NnldZ48ebLCw8Nd2oqX58SJEyooKCj3e8Q0zVKXTlXGzJkzVVBQUGqHzLMlJCQ4rpFjtZiYGLVq1UrTpk1z+eOMVLyc7mwlv9A99NBD6tmzpx544AFHW3svLy/dfPPN+uSTT7R161aXx7rzfdK4cWN17txZCxcudPp+2LFjh5KTk3X99deX+3ibzaaioiKXz7AzWVFvRT5fBw8erG+++abU7qHu/uxI0vXXX6+UlBSnz6yCggK99dZbatGihdOS3n//+9/67bffHC3A3VFSW3nh/uzP15L35ezP/FdeeUWSztkNsOR76cyfxYp8PlVGRd67oUOHavPmzaXOOB87dszxx82z3XPPPfr22281ZMgQt5bDV1SPHj0UHx+vt99+u9TXoqioSI8//rgk6aefftKmTZs0dOhQ/elPf3L5GjlypPbu3astW7ZYXic8CzNZgKRPP/3U8VfL7Oxsvffee9qzZ48SEhIca7VLJCcn67777it3NmPw4MFq3bq1WrVqpaKiIiUlJWnVqlWlXnNk2LBh+tOf/iRJLr8kBwYG6pprrtHf//53nTp1Sk2bNlVycrLj2h4l9uzZo0mTJun9998vtebS/N///Z/atWunkSNHljnmueee06FDh9ShQwf5+voqNTVV8+fPV6dOnRznvdx4441atmyZbrnlFt1www1KT0/Xm2++qejo6FJ/0fzhhx+UlJTktC0/P19eXl5KSkpy+gtxamqqGjVqVObSkhKTJ0/Wd999p+3btzu1Kq+MiIgIvfzyy7r33nt199136/rrr9e6dev09NNP69tvv3Us/ynLDTfcoFdeeUXx8fG68847lZ2drdmzZ6t169b69ttvHeNat26tv/71r3r++efVq1cv3XrrrfL19dXXX3+tJk2a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UvPmzWUYhlauXKmcnBzl5+erQYMGevzxx/XYY49p4cKF2rdvn1JTUzVr1iwtXLjQredUErCaNWumadOmKScnR5mZmcrMzKzci1RBhCwAAACgBolrHqdXrn1FYf5hTtvD/cP1yrWvVNl1slq2bKnU1FT16dNHEyZMUIcOHdSvXz+tX79ec+bMKfUxderU0fvvv6/du3erU6dOmjp1ql544QWnMTabTWPGjFG7du0UHx+vyy67TG+88YYkqWnTppo8ebISEhIUHh6usWPHSpKef/55Pf3000pMTHQ8btWqVYqKinLrOa1du1Z79+7V+vXrdemll6px48aOr6pkmFV5llstkJeXp6CgIOXm5iowMLC6ywEAAEANduLECaWnpysqKkp+fn7ntS+b3abU7FTlFOYo1D9UXcO6VskMFpyV9x5WNBvQ+AIAAACogby9vC1t044Lh+WCAAAAAGAhQhYAAAAAWIiQBQAAAAAWImQBAAAAgIUIWQAAAABgIUIWAAAAAFiIkAUAAAAAFiJkAQAAAICFCFkAAAAAKswwDC1fvry6y6jRCFkAAABADWTabCrYkqLclatUsCVFps1W5cfMzMzUww8/rJYtW8rX11eRkZEaOHCg1q9fXyXH27hxowzD0LFjx6pk/5I0aNAgNWvWTH5+fmrcuLH+/Oc/6/Dhw1V2PEnyqdK9AwAAAHBbXnKysqYk6nRmpmObT0SEwp+aqMD+/avkmPv379dVV12l4OBgvfzyy+rYsaNOnTqlNWvWaMyYMdq9e3eVHNcKpmnKZrPJx8c13vTp00dPPfWUGjdurEOHDunxxx/Xn/70J3355ZdVVg8zWQAAAEANkpecrEOPjnMKWJJ0OitLhx4dp7zk5Co57kMPPSTDMJSSkqLBgwfrsssuU/v27TV+/Hh99dVXpT6mtJmotLQ0GYah/fv3S5IOHDiggQMHqmHDhgoICFD79u21evVq7d+/X3369JEkNWzYUIZhaMSIEZIku92uxMRERUVFqV69err88su1ZMkSl+N++umniomJka+vr7744otSa3zsscd05ZVXqnnz5urZs6cSEhL01Vdf6dSpU+f/opWBmSwAAACghjBtNmVNSZRMs5Q7TckwlDUlUQ369pXh7W3ZcY8ePaqkpCS9+OKLCggIcLk/ODi40vseM2aMioqKtGnTJgUEBGjnzp2qX7++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AgBPlJ9l7TgAAGAZQhYAeKL64daOAwAAliFkAYAnat6zuIugjDIGGFJg0+JxAADggiJkAYAn8vIubtMuyTVo/X47/iWulwUAQDUgZAGAp4oeJA19Vwps7Lw9sEnxdq6TBQBAteBixADgyaIHSW1vKO4imJ9VfA5W857MYAEAUI0IWQDg6by8pahe1V0FAAD4HcsFAQAAAMBChCwAAAAAsBAhCwAAAAAsRMgCAAAAAAsRsgAAAADAQoQsAAAAALAQIQsAAAAALETIAgAAAAALEbIAAAAAwEKELAAAAACwECELAAAAACxEyAIAAAAACxGyAAAAAMBChCwAAAAAsBAhCwAAAAAsRMgCAAAAAAsRsgAAAADAQoQsAAAAALAQIQsAAAAALOQxIevo0aO66667FBgYqODgYI0aNUr5+fkVeqxpmrruuutkGIaWL19etYUCAAAAuKh5TMi666679P3332vt2rVauXKlNm3apPvvv79Cj50xY4YMw6jiCgEAAABA8qnuAipi165dSkpK0tdff61u3bpJkmbNmqXrr79e06ZNU5MmTcp8bFpamqZPn66tW7eqcePG5zzWyZMndfLkScftvLy8838CAAAAAC4aHjGTtXnzZgUHBzsCliTFxcXJy8tLW7ZsKfNxhYWFuvPOOzV79mxFRERU6FiJiYkKCgpyfEVGRp53/QAAAAAuHh4RsjIzMxUWFua0zcfHRyEhIcrMzCzzcY899ph69uypm266qcLHmjhxonJzcx1fP/30U6XrBmo8u01K/1z6bknxf+226q4IAADA41XrcsGEhARNnTq13DG7du2q1L5XrFihDRs2aPv27W49ztfXV76+vpU6JuBRdq6Qkp6U8g7/b1tgEyl+qhQ9qPrqAgAA8HDVGrImTJigESNGlDumZcuWioiIUHZ2ttP206dP6+jRo2UuA9ywYYP27dun4OBgp+2DBw9Wr169tHHjxvOoHPBwO1dIHw2TZDpvz8so3j70XYIWAABAJRmmaZrnHla9du3apejoaG3dulUxMTGSpOTkZMXHx+vnn38utfFFZmamjhw54rStY8eOmjlzpgYOHKioqKgKHTsvL09BQUHKzc1VYGDg+T8ZoLrZbdKMDs4zWE6M4hmtcd9JXt4XtDQAAICarKLZwCO6C7Zr107x8fG677779Oabb+rUqVMaO3asbr/9dkfA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oEOHDtX6+d79eVT9ubbX5cuXVV5ersjISHl7e6tTp04aOHCg1q5dW+Nnfad169bp1VdfVd++fe/ZFwDaGkIWAECGYUiSEhMTlZOTo6NHj1rsv3XrloYMGaJPPvlEmZmZioqK0rRp06r1mz17tnJycpSZmanHHntM06dPt6qOoqIivfDCC0pNTdXJkycVEhKicePGKSsry9wnJiZGFy5cUEpKinJycvTvf/+73ucvLy/X1KlTVVRUpN27d8vR0VGStHbtWq1atUrx8fE6ffq0goODNX78eH377bcWxzs6Omrnzp3m7X/84x/q1atXtfcJCQlRTk6O+ZWQkGCxf9euXXr99dcVExOjzMxMzZkzRzNmzNDBgwfrfS2SFB0drfT0dO3YsUOnT5/WpEmTFBISUq3u2nh5eZlrrPpZHj161Nzm5eWliooK9e7dWx9++KHOnj2rN998U0uWLFFSUpJVtQJAe8LtggAAlZaWSpJcXV3l4eGhW7duWezv1auXYmNjzduvvfaa9u3bp6SkJA0bNszc3rlzZ3l4eKisrExubm7q1q2bVXUMHjxYgwcPNm+vWLFCu3btUnJysqKjoyVJp06d0ssvv6wnn3xSktSjR496ndswDM2YMUMXL17U559/rq5du5r3xcfHa9GiRZo6daok6Z133tHBgweVkJCg9evXm/vNnDlTGzdu1NSpU1VcXKykpCTNnj272qxe1cxhlbs/h/j4eEVERGju3LmSpIULF+rLL79UfHy8nn322XpdT1ZWlhITE5WVlSVPT09JUmxsrFJSUpSYmKi33nrrnufo0KGDuc6qn3nVGLizz5/+9Cfztre3t9LT05WUlKTJkyfXq1YAaG8IWQAAFRQUSJK6dOlS4/7y8nK99dZbSkpKUnZ2tm7fvq2SkpJq67r+9re/adOmTSopKZGLi4uSk5Mt9u/Zs8ci3JSVlaljx47m7aKiIi1btkyffPKJcnJyVFZWpps3b1rMZHl7e+vTTz/V7373u3oHLEl64403lJqaqhkzZlgcV1BQoCtXrujpp5+26P/000/rq6++smgbP368Nm3apIsXL+rw4cMaOXKk3N3d611DlXPnzikqKqra+919G15YWJg6dOhg3r5586b5IRJnzpxReXm5BgwYYHFMSUmJHnzwQfN2fn6+xWdeNWtpjfXr1+v9999XVlaWbt68qdu3b/MwCwCoAyELAKArV65IknlG5G7vvvuu1q5dq4SEBA0aNEhdunTR/PnzLdYnSVJ4eLj+8Ic/6NatW9qyZYsmTZqks2fPmtd/Pfvss9qwYYO5/86dOy1mXGJjY7V//37Fx8erf//+6tSpk1566SWL91mzZo3Cw8PVs2dPde7cWeXl5fW6xnPnzmnv3r168cUXNWXKFAUHB9fvw7mDvb29IiIitGnTJh08eFDLly/XuXPnrD5Pfa1Zs0ZBQUHm7fDwcPOfi4qK1KFDBx0/ftwiiEmyCFVOTk46ceKEeTs7O1vPPPNMvWvYsWOHYmNjtWrVKg0fPlxOTk569913lZGR0YArAoD2gZAFANCxY8fk5OSkfv361bg/LS1NEyZM0Msvvyyp8kERFy5ckK+vr0W/bt26qX///pKkuLg4xcfH6+jRo+ag0KVLF/N+SXJzc6v2PhEREfrNb34jqTJIXL582aLPgAEDFBERoZ9//lkff/yx+fbBe9m2bZuee+45rVixQrNnz1ZmZqacnZ3l7OwsT09PpaWlaeTIkRa13HkrZJXZs2fLz89PPXr00PPPP9+gkPXoo48qLS3NYs1aWlpatc/Tw8PD4vPq1KmT+c/+/v4qLy/XtWvXNGLEiFrfy87OzuIc9vbW/dWflpamwMBA862NUuUDSgAAtSNkAUA7VlFRoT179mjJkiV65ZVXqs2IVPHx8dFHH32kL774Qt27d9fq1at19erVaqGguLhYubm5Kikp0ZYtW2Rvb2/xD/x78fHx0c6dOzVu3DiZTCb98Y9/VEVFhUWfL7/8UkuWLNHBgwf1y1/+UtevX6/XuatuEVywYIF27typhQsXatOmTZIqbyWMi4tTv3795Ofnp8TERJ06dUrbt2+vdh5vb2+tXr1avXv3lp1dw54f9cYbb2jy5Mny9/dXUFCQPv74Y+3cubPakxTrMmDAAIWHh+uVV17RqlWr5O/vr+vXrys1NVWPP/64xo4d26Da7ubj46OtW7dq37598vb21rZt23Ts2DF5e3vXedzFixdVVFSk3Nxc3bx50/x0R19fXzk4ONikNgBoqQhZANCO/ec//9HcuXM1ffp0rVixotZ+S5cu1Xfffafg4GB17txZUVFRCg0NVX5+vkW/jRs3auPGjXJwcJCPj4+2b99u8Xjze1m9erVmzpypwMBA9ezZU4sWLTKvF5Ok69eva9KkSVq9erWeeOIJq69XqpzZSUxMlJ+fnyZPnqzRo0dr3rx5ys/PV0xMjK5duyZfX18lJyfLx8enxnNERkY26L2rhIaGau3atYqPj9frr78ub29vJSYmWnUbn1T5NMg///nPiomJUXZ2tnr27KmnnnpKv/71rxtV353mzJmjkydPasqUKTKZTAoLC9PcuXO1d+/eOo+bNWuWPv/8c/O2v7+/JOn777+3akwAQGtkMhqyAhYAAAAAUCO+JwsAAAAAbIiQBQAAAAA2RMgCAAAAABsiZAEAAACADRGyAAAAAMCGCFkAAAAAYEOELAAAAACwIUIWAAAAANgQIQsAAAAAbIiQBQAAAAA2RMgCAAAAABv6f4jgyliSE3ZFAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textclusterpca_1pca_2
02 2 техническое задание 2 2 1 общие сведения п...20.3792670.009187
12 2 техническое задание 2 2 1 общие сведения п...00.4537260.042687
22 2 техническое задание общие сведения данной ...20.4900690.078381
3техническое задание 2 2 1 общие сведения интер...00.0734030.132265
42 2 техническое задание 2 2 1 общие сведения 1...00.494253-0.036965
\n", + "
" + ], + "text/plain": [ + " text cluster pca_1 \\\n", + "0 2 2 техническое задание 2 2 1 общие сведения п... 2 0.379267 \n", + "1 2 2 техническое задание 2 2 1 общие сведения п... 0 0.453726 \n", + "2 2 2 техническое задание общие сведения данной ... 2 0.490069 \n", + "3 техническое задание 2 2 1 общие сведения интер... 0 0.073403 \n", + "4 2 2 техническое задание 2 2 1 общие сведения 1... 0 0.494253 \n", + "\n", + " pca_2 \n", + "0 0.009187 \n", + "1 0.042687 \n", + "2 0.078381 \n", + "3 0.132265 \n", + "4 -0.036965 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textclusterpca_1pca_2
36этапы разработки проекта заключительные стадии...3-0.471378-0.163534
37этапы разработки проекта определение стратегии...1-0.350179-0.501840
38этапы разработки проекта реализация тестирован...1-0.230170-0.509385
39этапы разработки проекта стратегия анализ введ...1-0.277140-0.409235
402 1 3 язык манипуляции данными ямд язык манипу...3-0.2673090.168029
\n", + "
" + ], + "text/plain": [ + " text cluster pca_1 \\\n", + "36 этапы разработки проекта заключительные стадии... 3 -0.471378 \n", + "37 этапы разработки проекта определение стратегии... 1 -0.350179 \n", + "38 этапы разработки проекта реализация тестирован... 1 -0.230170 \n", + "39 этапы разработки проекта стратегия анализ введ... 1 -0.277140 \n", + "40 2 1 3 язык манипуляции данными ямд язык манипу... 3 -0.267309 \n", + "\n", + " pca_2 \n", + "36 -0.163534 \n", + "37 -0.501840 \n", + "38 -0.509385 \n", + "39 -0.409235 \n", + "40 0.168029 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from sklearn.manifold import TSNE\n", + "import numpy as np\n", "\n", - "# Загрузка данных\n", - "df = load_docs(\"data/text/\")\n", - "df[\"type\"] = df.apply(\n", - " lambda row: 0 if str(row[\"doc\"]).startswith(\"tz_\") else 1, axis=1\n", - ")\n", - "df.info()\n", - "df.sort_values(by=[\"doc\"], inplace=True)\n", + "num_clusters = 5 # Количество кластеров!\n", + "kmeans = KMeans(n_clusters=num_clusters, random_state=42)\n", + "clusters = kmeans.fit_predict(X)\n", "\n", + "# Визуализация кластеров с помощью t-SNE\n", + "tsne = TSNE(n_components=2, random_state=42)\n", + "X_embedded = tsne.fit_transform(X.toarray()) # Преобразуем разреженную матрицу в плотную\n", + "\n", + "# Уменьшение размерности с помощью PCA для визуализации\n", + "pca = PCA(n_components=2)\n", + "X_pca = pca.fit_transform(X.toarray()) # Преобразуем разреженную матрицу в плотную\n", + "\n", + "# Создаем DataFrame для удобства\n", + "df = pd.DataFrame({\n", + " \"text\": texts, # Исходные тексты\n", + " \"cluster\": clusters, # Метки кластеров\n", + " \"pca_1\": X_pca[:, 0], # Первая компонента PCA\n", + " \"pca_2\": X_pca[:, 1] # Вторая компонента PCA\n", + "})\n", + "\n", + "# Визуализация кластеров\n", + "plt.figure(figsize=(10, 8))\n", + "for cluster in range(num_clusters):\n", + " # Выбор точек, принадлежащих текущему кластеру\n", + " cluster_points = df[df[\"cluster\"] == cluster]\n", + " plt.scatter(cluster_points[\"pca_1\"], cluster_points[\"pca_2\"], label=f'Cluster {cluster}')\n", + "\n", + "plt.title(\"Визуализация кластеризации текстов с использованием PCA\")\n", + "plt.xlabel(\"Главная компонента 1\")\n", + "plt.ylabel(\"Главная компонента 2\")\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Вывод первых и последних строк DataFrame\n", "display(df.head(), df.tail())" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Классификация текстов (пример с использованием SVM)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Отчет о классификации:\n", + " precision recall f1-score support\n", + "\n", + " 0 0.57 1.00 0.73 4\n", + " 1 1.00 1.00 1.00 3\n", + " 2 0.00 0.00 0.00 3\n", + " 3 1.00 1.00 1.00 3\n", + "\n", + " accuracy 0.77 13\n", + " macro avg 0.64 0.75 0.68 13\n", + "weighted avg 0.64 0.77 0.69 13\n", + "\n", + "Точность: 0.77\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", + "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", + "d:\\ULSTU\\AIM2\\AIM-PIbd-32-Puchkina-A-A\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "\n", + "y = kmeans.labels_ # Пример меток классов\n", + "\n", + "# Разделение данных на обучающую и тестовую выборки!\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n", + "\n", + "# Обучение модели SVM\n", + "svm_model = SVC(kernel='linear')\n", + "svm_model.fit(X_train, y_train)\n", + "\n", + "# Предсказание на тестовой выборке\n", + "y_pred = svm_model.predict(X_test)\n", + "\n", + "# Оценка качества классификации\n", + "print(\"Отчет о классификации:\")\n", + "print(classification_report(y_test, y_pred))\n", + "print(f\"Точность: {accuracy_score(y_test, y_pred):.2f}\")" + ] } ], "metadata": { + "kernelspec": { + "display_name": "aimenv", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" } }, "nbformat": 4, -- 2.25.1