2972 lines
220 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"source": [
"#### Загрузка набора данных"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Price</th>\n",
" <th>Levy</th>\n",
" <th>Manufacturer</th>\n",
" <th>Model</th>\n",
" <th>Prod. year</th>\n",
" <th>Category</th>\n",
" <th>Leather interior</th>\n",
" <th>Fuel type</th>\n",
" <th>Engine volume</th>\n",
" <th>Mileage</th>\n",
" <th>Cylinders</th>\n",
" <th>Gear box type</th>\n",
" <th>Drive wheels</th>\n",
" <th>Doors</th>\n",
" <th>Wheel</th>\n",
" <th>Color</th>\n",
" <th>Airbags</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>13328</td>\n",
" <td>1399</td>\n",
" <td>LEXUS</td>\n",
" <td>RX 450</td>\n",
" <td>2010</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Hybrid</td>\n",
" <td>3.5</td>\n",
" <td>186005 km</td>\n",
" <td>6.0</td>\n",
" <td>Automatic</td>\n",
" <td>4x4</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>16621</td>\n",
" <td>1018</td>\n",
" <td>CHEVROLET</td>\n",
" <td>Equinox</td>\n",
" <td>2011</td>\n",
" <td>Jeep</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>3</td>\n",
" <td>192000 km</td>\n",
" <td>6.0</td>\n",
" <td>Tiptronic</td>\n",
" <td>4x4</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Black</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>8467</td>\n",
" <td>-</td>\n",
" <td>HONDA</td>\n",
" <td>FIT</td>\n",
" <td>2006</td>\n",
" <td>Hatchback</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.3</td>\n",
" <td>200000 km</td>\n",
" <td>4.0</td>\n",
" <td>Variator</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Right-hand drive</td>\n",
" <td>Black</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3607</td>\n",
" <td>862</td>\n",
" <td>FORD</td>\n",
" <td>Escape</td>\n",
" <td>2011</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Hybrid</td>\n",
" <td>2.5</td>\n",
" <td>168966 km</td>\n",
" <td>4.0</td>\n",
" <td>Automatic</td>\n",
" <td>4x4</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>White</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>11726</td>\n",
" <td>446</td>\n",
" <td>HONDA</td>\n",
" <td>FIT</td>\n",
" <td>2014</td>\n",
" <td>Hatchback</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>1.3</td>\n",
" <td>91901 km</td>\n",
" <td>4.0</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19232</th>\n",
" <td>8467</td>\n",
" <td>-</td>\n",
" <td>MERCEDES-BENZ</td>\n",
" <td>CLK 200</td>\n",
" <td>1999</td>\n",
" <td>Coupe</td>\n",
" <td>Yes</td>\n",
" <td>CNG</td>\n",
" <td>2.0 Turbo</td>\n",
" <td>300000 km</td>\n",
" <td>4.0</td>\n",
" <td>Manual</td>\n",
" <td>Rear</td>\n",
" <td>02-Mar</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19233</th>\n",
" <td>15681</td>\n",
" <td>831</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Sonata</td>\n",
" <td>2011</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>2.4</td>\n",
" <td>161600 km</td>\n",
" <td>4.0</td>\n",
" <td>Tiptronic</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Red</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19234</th>\n",
" <td>26108</td>\n",
" <td>836</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Tucson</td>\n",
" <td>2010</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>2</td>\n",
" <td>116365 km</td>\n",
" <td>4.0</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19235</th>\n",
" <td>5331</td>\n",
" <td>1288</td>\n",
" <td>CHEVROLET</td>\n",
" <td>Captiva</td>\n",
" <td>2007</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>2</td>\n",
" <td>51258 km</td>\n",
" <td>4.0</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>Black</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19236</th>\n",
" <td>470</td>\n",
" <td>753</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Sonata</td>\n",
" <td>2012</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Hybrid</td>\n",
" <td>2.4</td>\n",
" <td>186923 km</td>\n",
" <td>4.0</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>04-May</td>\n",
" <td>Left wheel</td>\n",
" <td>White</td>\n",
" <td>12</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19237 rows × 17 columns</p>\n",
"</div>"
],
"text/plain": [
" Price Levy Manufacturer Model Prod. year Category \\\n",
"0 13328 1399 LEXUS RX 450 2010 Jeep \n",
"1 16621 1018 CHEVROLET Equinox 2011 Jeep \n",
"2 8467 - HONDA FIT 2006 Hatchback \n",
"3 3607 862 FORD Escape 2011 Jeep \n",
"4 11726 446 HONDA FIT 2014 Hatchback \n",
"... ... ... ... ... ... ... \n",
"19232 8467 - MERCEDES-BENZ CLK 200 1999 Coupe \n",
"19233 15681 831 HYUNDAI Sonata 2011 Sedan \n",
"19234 26108 836 HYUNDAI Tucson 2010 Jeep \n",
"19235 5331 1288 CHEVROLET Captiva 2007 Jeep \n",
"19236 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 17 columns]"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import featuretools as ft\n",
"import re\n",
"from sklearn.preprocessing import StandardScaler\n",
"from imblearn.over_sampling import RandomOverSampler\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"\n",
"df = pd.read_csv(\"../data/car_price_prediction.csv\")\n",
"\n",
"df = df.drop(columns=[\"ID\"])\n",
"\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Анализ датасета и очистка данных"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price int64\n",
"Levy object\n",
"Manufacturer object\n",
"Model object\n",
"Prod. year int64\n",
"Category object\n",
"Leather interior object\n",
"Fuel type object\n",
"Engine volume object\n",
"Mileage object\n",
"Cylinders float64\n",
"Gear box type object\n",
"Drive wheels object\n",
"Doors object\n",
"Wheel object\n",
"Color object\n",
"Airbags int64\n",
"dtype: object"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3.5, 3. , 1.3, 2.5, 2. , 1.8, 2.4, 4. , 1.6, 3.3, 2.2,\n",
" 4.7, 1.5, 4.4, 1.4, 3.6, 2.3, 5.5, 2.8, 3.2, 3.8, 4.6,\n",
" 1.2, 5. , 1.7, 2.9, 0.5, 1.9, 2.7, 4.8, 5.3, 0.4, 1.1,\n",
" 2.1, 0.7, 5.4, 3.7, 1. , 2.6, 0.8, 0.2, 5.7, 6.7, 6.2,\n",
" 3.4, 6.3, 4.3, 4.2, 0. , 20. , 0.3, 5.9, 5.6, 6. , 0.6,\n",
" 6.8, 4.5, 7.3, 0.1, 3.1, 6.4, 3.9, 0.9, 5.2, 5.8])"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Engine volume\"] = df[\"Engine volume\"].str.replace(\"Turbo\", \"\")\n",
"df[\"Engine volume\"] = pd.to_numeric(df[\"Engine volume\"])\n",
"df[\"Engine volume\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([186005, 192000, 200000, ..., 140607, 307325, 186923])"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Mileage\"] = df[\"Mileage\"].str.replace(\"km\", \"\")\n",
"df[\"Mileage\"] = df[\"Mileage\"].astype(\"int64\")\n",
"df[\"Mileage\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1399, 1018, 0, 862, 446, 891, 761, 751, 394,\n",
" 1053, 1055, 1079, 810, 2386, 1850, 531, 586, 1249,\n",
" 2455, 583, 1537, 1288, 915, 1750, 707, 1077, 1486,\n",
" 1091, 650, 382, 1436, 1194, 503, 1017, 1104, 639,\n",
" 629, 919, 781, 530, 640, 765, 777, 779, 934,\n",
" 769, 645, 1185, 1324, 830, 1187, 1111, 760, 642,\n",
" 1604, 1095, 966, 473, 1138, 1811, 988, 917, 1156,\n",
" 687, 11714, 836, 1347, 2866, 1646, 259, 609, 697,\n",
" 585, 475, 690, 308, 1823, 1361, 1273, 924, 584,\n",
" 2078, 831, 1172, 893, 1872, 1885, 1266, 447, 2148,\n",
" 1730, 730, 289, 502, 333, 1325, 247, 879, 1342,\n",
" 1327, 1598, 1514, 1058, 738, 1935, 481, 1522, 1282,\n",
" 456, 880, 900, 798, 1277, 442, 1051, 790, 1292,\n",
" 1047, 528, 1211, 1493, 1793, 574, 930, 1998, 271,\n",
" 706, 1481, 1677, 1661, 1286, 1408, 1090, 595, 1451,\n",
" 1267, 993, 1714, 878, 641, 749, 1511, 603, 353,\n",
" 877, 1236, 1141, 397, 784, 1024, 1357, 1301, 770,\n",
" 922, 1438, 753, 607, 1363, 638, 490, 431, 565,\n",
" 517, 833, 489, 1760, 986, 1841, 1620, 1360, 474,\n",
" 1099, 978, 1624, 1946, 1268, 1307, 696, 649, 666,\n",
" 2151, 551, 800, 971, 1323, 2377, 1845, 1083, 694,\n",
" 463, 419, 345, 1515, 1505, 2056, 1203, 729, 460,\n",
" 1356, 876, 911, 1190, 780, 448, 2410, 1848, 1148,\n",
" 834, 1275, 1028, 1197, 724, 890, 1705, 505, 789,\n",
" 2959, 518, 461, 1719, 2858, 3156, 2225, 2177, 1968,\n",
" 1888, 1308, 2736, 1103, 557, 2195, 843, 1664, 723,\n",
" 4508, 562, 501, 2018, 1076, 1202, 3301, 691, 1440,\n",
" 1869, 1178, 418, 1820, 1413, 488, 1304, 363, 2108,\n",
" 521, 1659, 87, 1411, 1528, 3292, 7058, 1578, 627,\n",
" 874, 1996, 1488, 5679, 1234, 5603, 400, 889, 3268,\n",
" 875, 949, 2265, 441, 742, 425, 2476, 2971, 614,\n",
" 1816, 1375, 1405, 2297, 1062, 1113, 420, 2469, 658,\n",
" 1951, 2670, 2578, 1995, 1032, 994, 1011, 2421, 1296,\n",
" 155, 494, 426, 1086, 961, 2236, 1829, 764, 1834,\n",
" 1054, 617, 1529, 2266, 637, 626, 1832, 1016, 2002,\n",
" 1756, 746, 1285, 2690, 1118, 5332, 980, 1807, 970,\n",
" 1228, 1195, 1132, 1768, 1384, 1080, 7063, 1817, 1452,\n",
" 1975, 1368, 702, 1974, 1781, 1036, 944, 663, 364,\n",
" 1539, 1345, 1680, 2209, 741, 1575, 695, 1317, 294,\n",
" 1525, 424, 997, 1473, 1552, 2819, 2188, 1668, 3057,\n",
" 799, 1502, 2606, 552, 1694, 1759, 1110, 399, 1470,\n",
" 1174, 5877, 1474, 1688, 526, 686, 5908, 1107, 2070,\n",
" 1468, 1246, 1685, 556, 1533, 1917, 1346, 732, 692,\n",
" 579, 421, 362, 3505, 1855, 2711, 1586, 3739, 681,\n",
" 1708, 2278, 1701, 722, 1482, 928, 827, 832, 527,\n",
" 604, 173, 1341, 3329, 1553, 859, 167, 916, 828,\n",
" 2082, 1176, 1108, 975, 3008, 1516, 2269, 1699, 2073,\n",
" 1031, 1503, 2364, 1030, 1442, 5666, 2715, 1437, 2067,\n",
" 1426, 2908, 1279, 866, 4283, 279, 2658, 3015, 2004,\n",
" 1391, 4736, 748, 1466, 644, 683, 2705, 1297, 731,\n",
" 1252, 2216, 3141, 3273, 1518, 1723, 1588, 972, 682,\n",
" 1094, 668, 175, 967, 402, 3894, 1960, 1599, 2000,\n",
" 2084, 1621, 714, 1109, 3989, 873, 1572, 1163, 1991,\n",
" 1716, 1673, 2562, 2874, 965, 462, 605, 1948, 1736,\n",
" 3518, 2054, 2467, 1681, 1272, 1205, 750, 2156, 2566,\n",
" 115, 524, 3184, 676, 1678, 612, 328, 955, 1441,\n",
" 1675, 3965, 2909, 623, 822, 867, 3025, 1993, 792,\n",
" 636, 4057, 3743, 2337, 2570, 2418, 2472, 3910, 1662,\n",
" 2123, 2628, 3208, 2080, 3699, 2913, 864, 2505, 870,\n",
" 7536, 1924, 1671, 1064, 1836, 1866, 4741, 841, 1369,\n",
" 5681, 3112, 1366, 2223, 1198, 1039, 3811, 3571, 1387,\n",
" 1171, 1365, 1531, 1590, 11706, 2308, 4860, 1641, 1045,\n",
" 1901])"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Levy\"] = df[\"Levy\"].replace(\"-\", \"0\")\n",
"df[\"Levy\"] = df[\"Levy\"].astype(\"int64\")\n",
"df[\"Levy\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6, 4, 8, 1, 12, 3, 2, 16, 5, 7, 9, 10, 14])"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Cylinders\"] = df[\"Cylinders\"].astype(\"int64\")\n",
"df[\"Cylinders\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['04-May', '02-Mar', '>5'], dtype=object)"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Doors\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Четырехдверный', 'Двухдверный', 'Многодверный'], dtype=object)"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Doors\"] = df[\"Doors\"].map(\n",
" {\"02-Mar\": \"Двухдверный\", \"04-May\": \"Четырехдверный\", \">5\": \"Многодверный\"}\n",
")\n",
"df[\"Doors\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 3, 6, ..., 627220, 872946, 26307500])"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df = df.sort_values(by=\"Price\")\n",
"sorted_df[\"Price\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Количество строк до удаления некорректных значений: 19237\n",
"Количество строк после удаления некорректных значений: 17574\n"
]
}
],
"source": [
"print(f\"Количество строк до удаления некорректных значений: {len(df)}\")\n",
"df = df[df[\"Price\"] >= 500]\n",
"print(f\"Количество строк после удаления некорректных значений: {len(df)}\")"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 500, 549, 600, ..., 627220, 872946, 26307500])"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df = df.sort_values(by=\"Price\")\n",
"sorted_df[\"Price\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1943, 1953, 1957, 1964, 1965, 1968, 1973, 1974, 1977, 1978, 1980,\n",
" 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,\n",
" 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n",
" 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,\n",
" 2014, 2015, 2016, 2017, 2018, 2019, 2020])"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df = df.sort_values(by=\"Prod. year\")\n",
"sorted_df[\"Prod. year\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Price</th>\n",
" <th>Levy</th>\n",
" <th>Manufacturer</th>\n",
" <th>Model</th>\n",
" <th>Prod. year</th>\n",
" <th>Category</th>\n",
" <th>Leather interior</th>\n",
" <th>Fuel type</th>\n",
" <th>Engine volume</th>\n",
" <th>Mileage</th>\n",
" <th>Cylinders</th>\n",
" <th>Gear box type</th>\n",
" <th>Drive wheels</th>\n",
" <th>Doors</th>\n",
" <th>Wheel</th>\n",
" <th>Color</th>\n",
" <th>Airbags</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>13328</td>\n",
" <td>1399</td>\n",
" <td>LEXUS</td>\n",
" <td>RX 450</td>\n",
" <td>2010</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Hybrid</td>\n",
" <td>3.5</td>\n",
" <td>186005</td>\n",
" <td>6</td>\n",
" <td>Automatic</td>\n",
" <td>4x4</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>16621</td>\n",
" <td>1018</td>\n",
" <td>CHEVROLET</td>\n",
" <td>Equinox</td>\n",
" <td>2011</td>\n",
" <td>Jeep</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>3.0</td>\n",
" <td>192000</td>\n",
" <td>6</td>\n",
" <td>Tiptronic</td>\n",
" <td>4x4</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Black</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>8467</td>\n",
" <td>0</td>\n",
" <td>HONDA</td>\n",
" <td>FIT</td>\n",
" <td>2006</td>\n",
" <td>Hatchback</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.3</td>\n",
" <td>200000</td>\n",
" <td>4</td>\n",
" <td>Variator</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Right-hand drive</td>\n",
" <td>Black</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3607</td>\n",
" <td>862</td>\n",
" <td>FORD</td>\n",
" <td>Escape</td>\n",
" <td>2011</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Hybrid</td>\n",
" <td>2.5</td>\n",
" <td>168966</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>4x4</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>White</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>11726</td>\n",
" <td>446</td>\n",
" <td>HONDA</td>\n",
" <td>FIT</td>\n",
" <td>2014</td>\n",
" <td>Hatchback</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>1.3</td>\n",
" <td>91901</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19231</th>\n",
" <td>5802</td>\n",
" <td>1055</td>\n",
" <td>MERCEDES-BENZ</td>\n",
" <td>E 350</td>\n",
" <td>2013</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>3.5</td>\n",
" <td>107800</td>\n",
" <td>6</td>\n",
" <td>Automatic</td>\n",
" <td>Rear</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Grey</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19232</th>\n",
" <td>8467</td>\n",
" <td>0</td>\n",
" <td>MERCEDES-BENZ</td>\n",
" <td>CLK 200</td>\n",
" <td>1999</td>\n",
" <td>Coupe</td>\n",
" <td>Yes</td>\n",
" <td>CNG</td>\n",
" <td>2.0</td>\n",
" <td>300000</td>\n",
" <td>4</td>\n",
" <td>Manual</td>\n",
" <td>Rear</td>\n",
" <td>Двухдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19233</th>\n",
" <td>15681</td>\n",
" <td>831</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Sonata</td>\n",
" <td>2011</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>2.4</td>\n",
" <td>161600</td>\n",
" <td>4</td>\n",
" <td>Tiptronic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Red</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19234</th>\n",
" <td>26108</td>\n",
" <td>836</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Tucson</td>\n",
" <td>2010</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>2.0</td>\n",
" <td>116365</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19235</th>\n",
" <td>5331</td>\n",
" <td>1288</td>\n",
" <td>CHEVROLET</td>\n",
" <td>Captiva</td>\n",
" <td>2007</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>2.0</td>\n",
" <td>51258</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Black</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>17574 rows × 17 columns</p>\n",
"</div>"
],
"text/plain": [
" Price Levy Manufacturer Model Prod. year Category \\\n",
"0 13328 1399 LEXUS RX 450 2010 Jeep \n",
"1 16621 1018 CHEVROLET Equinox 2011 Jeep \n",
"2 8467 0 HONDA FIT 2006 Hatchback \n",
"3 3607 862 FORD Escape 2011 Jeep \n",
"4 11726 446 HONDA FIT 2014 Hatchback \n",
"... ... ... ... ... ... ... \n",
"19231 5802 1055 MERCEDES-BENZ E 350 2013 Sedan \n",
"19232 8467 0 MERCEDES-BENZ CLK 200 1999 Coupe \n",
"19233 15681 831 HYUNDAI Sonata 2011 Sedan \n",
"19234 26108 836 HYUNDAI Tucson 2010 Jeep \n",
"19235 5331 1288 CHEVROLET Captiva 2007 Jeep \n",
"\n",
" Leather interior Fuel type Engine volume Mileage Cylinders \\\n",
"0 Yes Hybrid 3.5 186005 6 \n",
"1 No Petrol 3.0 192000 6 \n",
"2 No Petrol 1.3 200000 4 \n",
"3 Yes Hybrid 2.5 168966 4 \n",
"4 Yes Petrol 1.3 91901 4 \n",
"... ... ... ... ... ... \n",
"19231 Yes Diesel 3.5 107800 6 \n",
"19232 Yes CNG 2.0 300000 4 \n",
"19233 Yes Petrol 2.4 161600 4 \n",
"19234 Yes Diesel 2.0 116365 4 \n",
"19235 Yes Diesel 2.0 51258 4 \n",
"\n",
" Gear box type Drive wheels Doors Wheel Color \\\n",
"0 Automatic 4x4 Четырехдверный Left wheel Silver \n",
"1 Tiptronic 4x4 Четырехдверный Left wheel Black \n",
"2 Variator Front Четырехдверный Right-hand drive Black \n",
"3 Automatic 4x4 Четырехдверный Left wheel White \n",
"4 Automatic Front Четырехдверный Left wheel Silver \n",
"... ... ... ... ... ... \n",
"19231 Automatic Rear Четырехдверный Left wheel Grey \n",
"19232 Manual Rear Двухдверный Left wheel Silver \n",
"19233 Tiptronic Front Четырехдверный Left wheel Red \n",
"19234 Automatic Front Четырехдверный Left wheel Grey \n",
"19235 Automatic Front Четырехдверный Left wheel Black \n",
"\n",
" Airbags \n",
"0 12 \n",
"1 8 \n",
"2 2 \n",
"3 0 \n",
"4 4 \n",
"... ... \n",
"19231 12 \n",
"19232 5 \n",
"19233 8 \n",
"19234 4 \n",
"19235 4 \n",
"\n",
"[17574 rows x 17 columns]"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Очистка дубликатов и пропущенных значений"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"np.int64(2773)"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.duplicated().sum()"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [],
"source": [
"df.drop_duplicates(inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price 0\n",
"Levy 0\n",
"Manufacturer 0\n",
"Model 0\n",
"Prod. year 0\n",
"Category 0\n",
"Leather interior 0\n",
"Fuel type 0\n",
"Engine volume 0\n",
"Mileage 0\n",
"Cylinders 0\n",
"Gear box type 0\n",
"Drive wheels 0\n",
"Doors 0\n",
"Wheel 0\n",
"Color 0\n",
"Airbags 0\n",
"dtype: int64"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isna().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Очистка выбросов"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price int64\n",
"Levy int64\n",
"Manufacturer object\n",
"Model object\n",
"Prod. year int64\n",
"Category object\n",
"Leather interior object\n",
"Fuel type object\n",
"Engine volume float64\n",
"Mileage int64\n",
"Cylinders int64\n",
"Gear box type object\n",
"Drive wheels object\n",
"Doors object\n",
"Wheel object\n",
"Color object\n",
"Airbags int64\n",
"dtype: object"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAF1CAYAAAATCKr1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9pElEQVR4nO3dfVxUdaI/8M8Aw8ggD6EDSDBI4s+HJB9bo1LTAEWvSejWmtfVxHVTLAUfWrz24O4tds2Hq5u59qTubesWhtiiJmwgDwmWLNzEWkLAyGTGyssgD80Mw/f3h5dzncCWAzNOHT7v12tecr7nO9/zPb4OH4/f+c73qIQQAkREpChuru4AERE5HsOdiEiBGO5ERArEcCciUiCGOxGRAjHciYgUiOFORKRAHq7ugLN0dHTg0qVL8PHxgUqlcnV3iIj6TAiBq1evIiQkBG5uP3xvrthwv3TpEsLCwlzdDSIih/vyyy8RGhr6g3UUG+4+Pj4Arv0l+Pr6urg3pGRWqxU5OTmIi4uDWq12dXdIwZqamhAWFibl2w9RbLh3DsX4+voy3MmprFYrtFotfH19Ge50U/RkqJkfqBIRKRDDnYhIgRjuREQKxHAnIlIghjsRkQIx3ImIFIjhTkSkQAx3IiIFkhXu6enpuPPOO+Hj44PAwEAkJCSgqqrKrs53332H5ORkDBo0CAMHDsT8+fNhNBql/f/93/+NhQsXIiwsDF5eXhg1ahR27drV5VgnT57EhAkToNFoEBkZiQMHDvTuDImI+iFZ4V5QUIDk5GSUlpYiNzcXVqsVcXFxaGlpkeqkpKTgr3/9KzIyMlBQUIBLly4hMTFR2l9WVobAwEC88cYbOHfuHP7t3/4NaWlpePHFF6U6dXV1mDNnDqZPn46KigqsXbsWy5cvx4kTJxxwykRE/YDog8uXLwsAoqCgQAghRGNjo1Cr1SIjI0Oq89lnnwkAoqSk5IbtrFq1SkyfPl3a3rhxo7j99tvt6jz88MNi5syZPe6byWQSAITJZOrxe4h6w2KxiKysLGGxWFzdFVI4ObnWp7VlTCYTACAgIADAtbtyq9WKmJgYqc7IkSOh1+tRUlKCu+6664btdLYBACUlJXZtAMDMmTOxdu3aG/bFbDbDbDZL201NTQCurfthtVrlnRj1a62trV2GG39Ic5sZp87WwMe/FAO9ND1+34gRI6DVanvTReqn5GRZr8O9o6MDa9euxT333IMxY8YAAAwGAzw9PeHv729XNygoCAaDodt2Tp06hbfffhtHjx6VygwGA4KCgrq00dTUhLa2Nnh5eXVpJz09HVu2bOlSnpOTw18gkqWmpgbr1q2T/b6tMutv374dw4YNk30c6r9aW1t7XLfX4Z6cnIzKykoUFxf3tglUVlZi3rx5eOaZZxAXF9frdgAgLS0Nqamp0nbn0phxcXFcFZJkaW1txb333tvj+p83mLDh8Kd44cHR+H9D/Hr8Pt65k1ydIxI90atwX716NbKzs1FYWGi3YHxwcDAsFgsaGxvt7t6NRiOCg4Pt2vj0009x//33Y8WKFdi8ebPdvuDgYLsZNp1t+Pr6dnvXDgAajQYaTdf/EqvVai7DSrL4+fnhZz/7WY/re37xLTQlFowZNwHjwgc5sWfU38nJMlmzZYQQWL16NQ4fPoy8vDxERETY7Z84cSLUajU++OADqayqqgr19fWIjo6Wys6dO4fp06djyZIleO6557ocJzo62q4NAMjNzbVrg4iIbkzWnXtycjLefPNNHDlyBD4+PtI4up+fH7y8vODn54ekpCSkpqYiICAAvr6+ePzxxxEdHS19mFpZWYkZM2Zg5syZSE1Nldpwd3eHTqcDADz22GN48cUXsXHjRixbtgx5eXl455137MbliYjoB8iZhgOg29f+/fulOm1tbWLVqlXilltuEVqtVjz44IOioaFB2v/MM89020Z4eLjdsfLz88W4ceOEp6enuO222+yO0ROcCkk3S/mFb0T4k9mi/MI3ru4KKZycXFMJIYRL/lVxsqamJvj5+cFkMvEDVXKqii++RcLeUmStvItj7uRUcnKNa8sQESkQw52ISIEY7kRECsRwJyJSIIY7EZECMdyJiBSI4U5EpEAMdyIiBWK4ExEpEMOdiEiBGO5ERArEcCciUiCGOxGRAjHciYgUiOFORKRADHciIgXq1QOyiX6K6r5pQYu53eHt1nzdIv3p4eH4XylvjQciBns7vF1SNoY79Qt137Rg+raTTj3GukNnndZ2/vr7GPAkC8Od+oXOO/b/eHgcIgMHOrbtNjOyT5bgX+6LhreXxqFtn7/cjLVvVzjlfxykbAx36lciAwdizK1+Dm3TarXCoAMmhN8CtVrt0LaJeosfqBIRKRDDnYhIgRjuREQKxDF36jdUHk2oa6qC2wDHfqDa3t6OS+2X8NmVzxw+FbKuqRkqjyaHtkn9A8Od+g21/2ls+uh5p7X/0vsvOaVdtf/9AGY7pW1SLoY79RvWxsnYPucRDHPwVMj29nZ8WPwh7rn3HoffuddcbsYTf6lxaJvUPzDcqd8Q7b6I8B2B0YMcPxWyzqMOowJGOXwqZMd3Joj2rx3aJvUP/ECViEiBZIV7eno67rzzTvj4+CAwMBAJCQmoqqqyq/Pdd98hOTkZgwYNwsCBAzF//nwYjUa7Ok888QQmTpwIjUaDcePGdXusTz75BFOmTMGAAQMQFhaGrVu3yjszIqJ+TFa4FxQUIDk5GaWlpcjNzYXVakVcXBxaWlqkOikpKfjrX/+KjIwMFBQU4NKlS0hMTOzS1rJly/Dwww93e5ympibExcUhPDwcZWVleOGFF/Dss8/i5Zdflnl6RET9k6wx9/fff99u+8CBAwgMDERZWRmmTp0Kk8mE1157DW+++SZmzJgBANi/fz9GjRqF0tJS3HXXXQCA3bt3AwC+/vprfPLJJ12O85e//AUWiwWvv/46PD09cfvtt6OiogI7duzAihUrenWiRET9SZ8+UDWZTACAgIAAAEBZWRmsVitiYmKkOiNHjoRer0dJSYkU7v9MSUkJpk6dCk9PT6ls5syZ+MMf/oD/+Z//wS233NLlPWazGWazWdpuaro2N9hqtcJqtco/OVKU9vZ26U9HXw+d7TnjOnNmv+mnR8410Otw7+jowNq1a3HPPfdgzJgxAACDwQBPT0/4+/vb1Q0KCoLBYOhx2waDAREREV3a6NzXXbinp6djy5YtXcpzcnKg1Wp7fGxSpi+bAcADxcXF+MKxMyElubm5Dm/zZvSbfjpaW1t7XLfX4Z6cnIzKykoUFxf3tgmHSktLQ2pqqrTd1NSEsLAwxMXFwdfX14U9ox+Dc5easO1sKe69917cHuLY68FqtSI3NxexsbEOnwrpzH7TT0/niERP9CrcV69ejezsbBQWFiI0NFQqDw4OhsViQWNjo93du9FoRHBwcI/bDw4O7jLDpnP7Ru1oNBpoNF3X0lar1VyGlaQvF3l4eDjtenDGtXYz+k0/HXKuAVmzZYQQWL16NQ4fPoy8vLwuQycTJ06EWq3GBx98IJVVVVWhvr4e0dHRPT5OdHQ0CgsL7caXcnNzMWLEiG6HZIiIyJ6scE9OTsYbb7yBN998Ez4+PjAYDDAYDGhrawMA+Pn5ISkpCampqcjPz0dZWRkeffRRREdH232Yev78eVRUVEjvraioQEVFBSwWCwDgkUcegaenJ5KSknDu3Dm8/fbb2LVrl92wCxER3ZisYZm9e/cCAO677z678v3792Pp0qUAgJ07d8LNzQ3z58+H2WzGzJkz8dJL9gsqLV++HAUFBdL2+PHjAQB1dXUYOnQo/Pz8kJOTg+TkZEycOBGDBw/G008/zWmQREQ9JCvchRD/tM6AAQOwZ88e7Nmz54Z1Tp48+U/bueOOO1BUVCSne0RE9L+4cBj1C21WGwCg8iuTw9tuaTPjzNdA8Bf/45QHZBP1BsOd+oWa/w3J32SeddIRPPCf5z92UtuAt4a/qiQPrxjqF+JuvzaFdljgQHip3R3adlWDCesOncX2BVEYMcSxywkD14I9YrC3w9slZWO4U78Q4O2JX/xM75S2O5cIGKbzxphbHR/uRL3B9dyJiBSI4U5EpEAMdyIiBWK4ExEpEMOdiEiBGO5ERArEcCciUiCGOxGRAjHciYgUiOFORKRADHciIgViuBMRKRDDnYhIgRjuREQKxHAnIlIghjsRkQIx3ImIFIjhTkSkQAx3IiIFYrgTESkQw52ISIEY7kRECsRwJyJSIIY7EZECyQr39PR03HnnnfDx8UFgYCASEhJQVVVlV+e7775DcnIyBg0ahIEDB2L+/PkwGo12derr6zFnzhxotVoEBgZiw4YNaG9vt6tz8uRJTJgwARqNBpGRkThw4EDvzpCIqB+SFe4FBQVITk5GaWkpcnNzYbVaERcXh5aWFqlOSkoK/vrXvyIjIwMFBQW4dOkSEhMTpf02mw1z5syBxWLBqVOncPDgQRw4cABPP/20VKeurg5z5szB9OnTUVFRgbVr12L58uU4ceKEA06ZiKgfEH1w+fJlAUAUFBQIIYRobGwUarVaZGRkSHU+++wzAUCUlJQIIYQ4duyYcHNzEwaDQaqzd+9e4evrK8xmsxBCiI0bN4rbb7/d7lgPP/ywmDlzZo/7ZjKZBABhMpl6fX5EPVF+4RsR/mS2KL/wjau7QgonJ9c8+vIPg8lkAgAEBAQAAMrKymC1WhETEyPVGTlyJPR6PUpKSnDXXXehpKQEUVFRCAoKkurMnDkTK1euxLlz5zB+/HiUlJTYtdFZZ+3atTfsi9lshtlslrabmpoAAFarFVartS+nSfSDOocU29vbea2RU8m5vnod7h0dHVi7di3uuecejBkzBgBgMBjg6ekJf39/u7pBQUEwGAxSneuDvXN/574fqtPU1IS2tjZ4eXl16U96ejq2bNnSpTwnJwdarbZ3J0nUA182A4AHSktL8VWlq3tDStba2trjur0O9+TkZFRWVqK4uLi3TThUWloaUlNTpe2mpiaEhYUhLi4Ovr6+LuwZKd1/118Bzp7BXXfdhbH6AFd3hxSsc0SiJ3oV7qtXr0Z2djYKCwsRGhoqlQcHB8NisaCxsdHu7t1oNCI4OFiq89FHH9m11zmb5vo6359hYzQa4evr2+1dOwBoNBpoNJou5Wq1Gmq1Wv5JEvWQh4eH9CevNXImOdeXrHAXQuDxxx/H4cOHcfLkSURERNjtnzhxItRqNT744APMnz8fAFBVVYX6+npER0cDAKKjo/Hcc8/h8uXLCAwMBADk5ubC19cXo0ePluocO3bMru3c3FypDSJnam1txT/+8Y8e1Z04caL08/g/XPuzrKysR+8dOXIkhwzJeeR8Urty5Urh5+cnTp48KRoaGqRXa2urVOexxx4Ter1e5OXliTNnzojo6GgRHR0t7W9vbxdjxowRcXFxoqKiQrz//vtCp9OJtLQ0qU5tba3QarViw4YN4rPPPhN79uwR7u7u4v333+9xXzlbhnqrrKxMAHD6q6yszNWnSj8xcnJNJYQQPf2HQKVSdVu+f/9+LF26FMC1LzGtW7cOb731FsxmM2bOnImXXnpJGnIBgC+++AIrV67EyZMn4e3tjSVLluD3v/+99N9b4NqXmFJSUvDpp58iNDQUTz31lHSMnmhqaoKfnx9MJhPH3EmWnty5X3/HfiP/7A6ed+4kl5xckxXuPyUMd3KW79/kWCwWHDt2DLNnz4anp6fdPoX+epGLyMm1Ps1zJ+rvPD097QLd09MTFovFhT0iuoYLhxH1wfeDnMFOPxYMdyIiBWK4E/WRxWJBVlYW79rpR4Vj7kR99P0PUYl+DHjnTkSkQAx3IiIFYrgT9RHH3OnHiGPuRH3EMXf6MeKdOxGRAjHciYgUiOFO1Eccc6cfI465E/URx9zpx4h37kRECsRwJyJSIIY7kUw+Pj7SzwEB9g/Evn77+npENxvDnUimq1evSj9fuXLFbt/129fXI7rZGO5ERArEcCfqg+HDh//gNpGrMNyJ+iA2NvYHt4lchQ/IJpLp+w/I/iEK/fUiF5GTa7xzJyJSIIY7kUybNm2Sfp47d67dvuu3r69HdLNxWIZIJg7LkKtwWIaIqJ9juBMRKRDDnUim3bt3Sz8fPnzYbsnfw4cPd1uP6GbjmDuRTD4+Pmhubv6n9QYOHMglCMihnDrmXlhYiLlz5yIkJAQqlQpZWVl2+41GI5YuXYqQkBBotVrMmjUL1dXVdnVqamrw4IMPQqfTwdfXFw899BCMRqNdnStXrmDRokXw9fWFv78/kpKSevQLReRsra2tDq1H5Ayyw72lpQVjx47Fnj17uuwTQiAhIQG1tbU4cuQIysvLER4ejpiYGLS0tEjvj4uLg0qlQl5eHj788ENYLBbMnTsXHR0dUluLFi3CuXPnkJubi+zsbBQWFmLFihV9OFUix9BqtQ6tR+QUog8AiMOHD0vbVVVVAoCorKyUymw2m9DpdOKVV14RQghx4sQJ4ebmJkwmk1SnsbFRqFQqkZubK4QQ4tNPPxUAxMcffyzVOX78uFCpVOKrr77qUd9MJpMAYHccIkfIyMgQAAQAUVJSIiwWi8jKyhIWi0WUlJRI+zIyMlzdVVIYObnm0Mfsmc1mAMCAAQOkMjc3N2g0GhQXF2P58uUwm81QqVTQaDRSnQEDBsDNzQ3FxcWIiYlBSUkJ/P39MWnSJKlOTEwM3NzccPr0aTz44IPdHrvz+MC1sSkAsFqtsFqtjjxN6ud+/vOfSz9HR0dDpVLB3d0dNpvNbl77z3/+cz5XlRxKTpY5NNxHjhwJvV6PtLQ07Nu3D97e3ti5cycuXryIhoYGAMBdd90Fb29vPPnkk3j++echhMBvfvMb2Gw2qY7BYEBgYKB9Rz08EBAQAIPB0O2x09PTsWXLli7lOTk5/O8xOZUQAu3t7d3uO3bs2E3uDSmZnM9xHBruarUamZmZSEpKQkBAANzd3RETE4P4+Hjpjkan0yEjIwMrV67E7t274ebmhoULF2LChAlwc+v9zMy0tDSkpqZK201NTQgLC0NcXBxny5BTqVQqCCGkP683e/ZsF/WKlKhzRKInHBruADBx4kRUVFTAZDLBYrFAp9Nh8uTJdkMscXFxqKmpwTfffAMPDw/4+/sjODgYt912GwAgODgYly9ftmu3vb0dV65cQXBwcLfH1Wg0dkM9ndRqNdRqtQPPkPq748ePIz4+HgBQXl6O22+/HceOHcPs2bNx7tw5jB8/XqrHa48cSc715PBw7+Tn5wcAqK6uxpkzZ/C73/2uS53BgwcDAPLy8nD58mU88MADAK6NYzY2NqKsrAwTJ06U6nR0dGDy5MnO6jJRj2zYsEH6uTPIb1Rv1qxZN6NLRF3IDvfm5macP39e2q6rq0NFRQUCAgKg1+uRkZEBnU4HvV6Ps2fPYs2aNUhISEBcXJz0nv3792PUqFHQ6XQoKSnBmjVrkJKSghEjRgAARo0ahVmzZuFXv/oV/vSnP8FqtWL16tX4xS9+gZCQEAecNlHvXbp0yaH1iJxC7lSc/Px8aarX9a8lS5YIIYTYtWuXCA0NFWq1Wuj1erF582ZhNpvt2njyySdFUFCQUKvVYvjw4WL79u2io6PDrs63334rFi5cKAYOHCh8fX3Fo48+Kq5evdrjfnIqJDnLmDFjuv0d+P5rzJgxru4qKYycXOPyA0QyffTRR9LwYHV1NcLDw6Ux9y+++EJ6jurp06fxs5/9zJVdJYWRk2sMdyKZPD097eYbe3t7w83NDR0dHdI3sYFrH35xnjs5kpxcc9oHqkRK9f0vklwf6D9Uj+hm4pK/RDJ9fzqaVquFRqPp8mU5ToMkV2K4E8lUUlIi/VxTU4PGxka8/fbbaGxsRE1NTbf1iG42DssQybRmzRrp52HDhgG4dpf+/WGYNWvWoLi4+Kb2jagT79yJZKqvr+9S1t34enf1iG4WhjuRTHq93qH1iJyB4U4k03/+539KPxuNRrtnqF7/RLHr6xHdbBxzJ5Kpcw0kAAgKCoKvr6+0KuT1q/Y98MADOHv2rCu6SMRwJ5Krc82YziV+v78Ma2c515YhV+KwDJFMnYvXdX6528/PT3pdX85F7siVGO5EMr333nvSz0ajEV9//TUOHjyIr7/+2m7M/fp6RDcbh2WIZFq8eLH0c1BQELRarfQM1esfg7Z48WLOcyeXYbgTyfT9+es3eq4l57mTK3FYhkim789f9/b2hpeXF7y9vX+wHtHNxHAnkunNN9+Ufq6vr8fixYsxYsQILF682O5u/fp6RDcb13Mnkunee+/Fhx9++E/r3XPPPRxzJ4eSk2u8cyeSqadj6RxzJ1diuBPJdOuttwK49mWly5cvIzo6GoMHD0Z0dDQuX74MlUplV4/IFThbhkim0aNHo7S0FEIIDBgwAL/97W9x/PhxxMfHY8CAAdKXmEaPHu3inlJ/xnAnkunixYvSz9ePe+7YseOG9YhuNg7LEMk0fPhwh9YjcgaGO5FMv//97wFcG3M3GAx2Y+4Gg0Eac++sR+QKDHcimc6cOQPg2gJhYWFhCAsLw9y5c6WfO8fcO+sRuQLH3IlkamhoAABMmDABf//73/HOO+/Y7e8s76xH5AoMdyKZhgwZAgAoLy/H7NmzodFocP78eURGRsJsNuP48eN29Yhcgd9QJZLJYrHA29sbgwYNwsWLFyGEwLFjxzB79myoVCqEhobi22+/RUtLCzw9PV3dXVIQObnGO3cimU6dOoX29nYYjUYkJCQgIiICn3/+Of72t7+hrq5OWtP91KlTuO+++1zbWeq3ZH+gWlhYiLlz5yIkJAQqlQpZWVl2+41GI5YuXYqQkBBotVrMmjUL1dXVdnUMBgMWL16M4OBgeHt7Y8KECXj33Xft6ly5cgWLFi2Cr68v/P39kZSUhObmZvlnSORgnWPpc+bMwdGjR/Hiiy8iJycHL774Io4ePYo5c+bY1SNyBdnh3tLSgrFjx2LPnj1d9gkhkJCQgNraWhw5cgTl5eUIDw9HTEwMWlpapHq//OUvUVVVhffeew9nz55FYmIiHnroIZSXl0t1Fi1ahHPnziE3NxfZ2dkoLCzEihUrenmaRI7TOZZ+9OhRBAUFISUlBStWrEBKSgqCgoJw9OhRu3pELiH6AIA4fPiwtF1VVSUAiMrKSqnMZrMJnU4nXnnlFanM29tb/PnPf7ZrKyAgQKrz6aefCgDi448/lvYfP35cqFQq8dVXX/WobyaTSQAQJpOpN6dGdEOtra0CgPD09BRms1lYLBaRlZUlLBaLMJvNwtPTUwAQra2tru4qKYycXHPomLvZbAYADBgwQCpzc3ODRqNBcXExli9fDgC4++678fbbb2POnDnw9/fHO++8g++++04anywpKYG/vz8mTZoktRMTEwM3NzecPn0aDz74YLfH7jw+AOmJ9FarFVar1ZGnSf3cSy+9BODaB6uJiYlYt24d2traUFxcjO3bt8NisUj1nnjiCVd2lRRGTpY5NNxHjhwJvV6PtLQ07Nu3D97e3ti5cycuXrxoN/74zjvv4OGHH8agQYPg4eEBrVaLw4cPIzIyEsC1MfnAwED7jnp4ICAgAAaDodtjp6enY8uWLV3Kc3JyoNVqHXiW1N/l5eUBAJKTk5GRkYEZM2ZI+4KCgpCcnIw9e/YgLy9PuqaJHOFGj3TsjkPDXa1WIzMzE0lJSQgICIC7uztiYmIQHx8vfWsPAJ566ik0Njbib3/7GwYPHoysrCw89NBDKCoqQlRUVK+OnZaWhtTUVGm7qakJYWFhiIuL41RIcqjz58/j2LFjiIqKwrZt23Dy5Enk5uYiNjYW9913H/bv3w8AmDFjBmbPnu3i3pKSdI5I9Ehfxn/wvTH36zU2NorLly8LIYT42c9+JlatWiWEEOL8+fNdxuWFEOL+++8Xv/71r4UQQrz22mvC39/fbr/VahXu7u4iMzOzR33jmDs5i9lsFh4eHiIoKEhYrVa7MXer1SqCgoKEh4eHMJvNru4qKYycXHPa2jJ+fn7Q6XSorq7GmTNnMG/ePAD/998KNzf7Q7u7u6OjowMAEB0djcbGRpSVlUn78/Ly0NHRgcmTJzury0Q94unpiZSUFBiNRtx6661YuHAhdu/ejYULF+LWW2+F0WhESkoKv8BEriX3X46rV6+K8vJyUV5eLgCIHTt2iPLycvHFF18IIYR45513RH5+vqipqRFZWVkiPDxcJCYmSu+3WCwiMjJSTJkyRZw+fVqcP39ebNu2TahUKnH06FGp3qxZs8T48ePF6dOnRXFxsRg+fLhYuHBhj/vJO3dytjvvvFMA6PK68847Xd01Uig5uSY73PPz87u9oJcsWSKEEGLXrl0iNDRUqNVqodfrxebNm7v89/Tzzz8XiYmJIjAwUGi1WnHHHXd0mRr57bffioULF4qBAwcKX19f8eijj4qrV6/2uJ8Md3KmDRs2CAAiMDBQLFiwQMyYMUMsWLBABAYGCgBiw4YNru4iKZCcXOPaMkQycW0ZchU5ucb13Ilkeumll9De3o5///d/R0dHB3bv3o2XX34Zu3fvRkdHB37729+ivb1dmg9P5AoMdyKZampqAAB///vf4e3tjfXr1+PYsWNYv349vL29UVFRYVePyBW4KiSRTMOGDQMA7N27F0FBQdiyZQs0Gg3MZjOeeeYZ7N27164ekStwzJ1IpubmZvj4+EClUqG1tRXu7u7SmLvNZoNWq4UQAlevXsXAgQNd3V1SEI65EznRq6++CuDaKqhDhw7Fq6++iitXruDVV1/F0KFDpW9jd9YjcgUOyxDJ1DmWvnLlSrzyyitYtWqVtM/DwwMrV67E3r17OeZOLsU7dyKZOsfSJ0yYgJaWFmzbtg2zZ8/Gtm3b0NLSgnHjxtnVI3IFjrkTycR57uQqHHMncqLr15YJDQ21G3MPDQ3l2jL0o8Axd6Je2Lp1KwBg586dXcbcN2zYIO0nchUOyxD1gcViwR//+Efk5eVhxowZePzxx3nHTk4jJ9d4507UB+7u7hg7diwuXbqEsWPHwt3d3dVdIgLAMXeiXsvMzERkZCRiY2OxY8cOxMbGIjIyEpmZma7uGhHDnag3MjMzsWDBAkRFRaGoqAhvvfWW9JjIBQsWMODJ5TjmTiSTzWZDZGQkoqKikJWVBZvNJk2FdHd3R0JCAiorK1FdXc1hGnIoToUkcqKioiJcuHABmzZtghACBQUFKCwsREFBAYQQSEtLQ11dHYqKilzdVerHGO5EMjU0NAC4tgxBd2PutbW1dvWIXIHhTiTTkCFDAACLFy/udsx98eLFdvWIXIFj7kQycfkBchWOuRM50alTp9De3g6j0YjExESUlpaira0NpaWlSExMhNFoRHt7O06dOuXqrlI/xnAnkqlzLP2NN97A2bNnMXXqVCxcuBBTp05FZWUl3njjDbt6RK7AcCeSqXMsfdiwYTh//jxyc3ORmpqK3NxcVFdX47bbbrOrR+QKHHMnkonz3MlVOOZO5ETu7u7Yvn07srOzkZCQYDfmnpCQgOzsbGzbto3BTi7FhcOIeiExMRGHDh3CunXrMHXqVKk8IiIChw4dQmJiogt7R8RhGaI+sdlsyM/Px/HjxxEfH4/p06fzjp2chkv+Et0k7u7umDZtGlpaWjBt2jQGO/1ocMydiEiBZId7YWEh5s6di5CQEKhUKmRlZdntNxqNWLp0KUJCQqDVajFr1ixUV1dL+y9cuACVStXtKyMjQ6pXX1+POXPmQKvVIjAwEBs2bEB7e3vvz5SIqB+RHe4tLS0YO3Ys9uzZ02WfEAIJCQmora3FkSNHUF5ejvDwcMTExKClpQUAEBYWhoaGBrvXli1bMHDgQMTHxwO4No45Z84cWCwWnDp1CgcPHsSBAwfw9NNP9/F0iYj6CdEHAMThw4el7aqqKgFAVFZWSmU2m03odDrxyiuv3LCdcePGiWXLlknbx44dE25ubsJgMEhle/fuFb6+vsJsNveobyaTSQAQJpNJxhkRyWexWERWVpawWCyu7gopnJxcc+gHqmazGQAwYMAAqczNzQ0ajQbFxcVYvnx5l/eUlZWhoqLC7n8CJSUliIqKQlBQkFQ2c+ZMrFy5EufOncP48eO7PXbn8YFrnyoDgNVqhdVq7fvJEd1A5/XF64ycTc415tBwHzlyJPR6PdLS0rBv3z54e3tj586duHjx4g3X2XjttdcwatQo3H333VKZwWCwC3YA0rbBYOi2nfT0dGzZsqVLeU5ODrRabW9PiajHcnNzXd0FUrjW1tYe13VouKvVamRmZiIpKQkBAQFwd3dHTEwM4uPjIbqZTt/W1oY333wTTz31VJ+PnZaWhtTUVGm7qakJYWFhiIuL4zx3ciqr1Yrc3FzExsZCrVa7ujukYJ0jEj3h8HnuEydOREVFBUwmEywWC3Q6HSZPnoxJkyZ1qXvo0CG0trbil7/8pV15cHAwPvroI7syo9Eo7euORqOBRqPpUq5Wq/kLRzcFrzVyNjnXl9Pmufv5+UGn06G6uhpnzpzBvHnzutR57bXX8MADD0Cn09mVR0dH4+zZs7h8+bJUlpubC19fX4wePdpZXSaSzWaz2T1D1WazubpLRNfI/bT26tWrory8XJSXlwsAYseOHaK8vFx88cUXQggh3nnnHZGfny9qampEVlaWCA8PF4mJiV3aqa6uFiqVShw/frzLvvb2djFmzBgRFxcnKioqxPvvvy90Op1IS0vrcT85W4ac7d133xVDhw4VAKTX0KFDxbvvvuvqrpFCyck12eGen59vdzF3vpYsWSKEEGLXrl0iNDRUqNVqodfrxebNm7udvpiWlibCwsKEzWbr9jgXLlwQ8fHxwsvLSwwePFisW7dOWK3WHveT4U7O9O677wqVSiXmzp0rioqKxFtvvSWKiorE3LlzhUqlYsCTU8jJNS4cRiQT13MnV+F67kROVFRUhAsXLmDTpk1wc7P/FXJzc0NaWhrq6upQVFTkoh4SMdyJZOv8zsaYMWO63d9Zzmeokisx3Ilk6nw2amVlZbf7O8v5DFVyJYY7kUxTpkzB0KFD8fzzz6Ojo8NuX0dHB9LT0xEREYEpU6a4qIdEDHci2fgMVfop4JOYiHqBz1ClHztOhSTqAz5DlW4mPkOV6CbhM1Tpx4rhTtQHFosFf/zjH5GXl4fz58/j8ccfh6enp6u7RcQPVIl6a+PGjfD29sb69etx7NgxrF+/Ht7e3ti4caOru0bEO3ei3ti4cSNeeOEFBAUFYcuWLdBoNDCbzXjmmWfwwgsvAAC2bt3q4l5Sf8Y7dyKZLBYLdu7ciaCgINTW1qK5uRkZGRlobm5GbW0tgoKCsHPnTlgsFld3lfoxhjuRTC+99BLa29sxbtw4+Pn52Q3L+Pn54Y477kB7ezteeuklV3eV+jEOyxDJVFNTAwA4ceJEt8Mync9S7axH5Aq8cyeSSa/XAwB8fX1x8eJFLFu2DLfccguWLVuGixcvwsfHx64ekSsw3Il6SaHf/yOFYLgTyVRfXw8AuHr1KkJDQ/Hqq6/iypUrePXVVxEaGoqrV6/a1SNyBY65E8k0bNgwAMDMmTPxwQcfYNWqVdI+Dw8PxMXFIScnR6pH5ApcW4ZIJovFAm9vbwwaNAi1tbXYu3cv8vLyMGPGDKxcuRK33XYbvv32W7S0tPDbquRQfMwekRN5enoiJSUFRqMRt912G7RaLRYsWACtVovbbrsNRqMRKSkpDHZyKQ7LEPVC57dPd+7c2WVYZsOGDfx2Krkch2WI+uD6hcNmzJjBhcPIqbjkL9FN4unpiSeeeAKRkZGYPXs21Gq1q7tEBIBj7kREisRwJyJSIIY7EZECMdyJiBSI4U5EpECyw72wsBBz585FSEgIVCoVsrKy7PYbjUYsXboUISEh0Gq1mDVrFqqrq7u0U1JSghkzZsDb2xu+vr6YOnUq2trapP1XrlzBokWL4OvrC39/fyQlJaG5uVn+GRIR9UOyw72lpQVjx47Fnj17uuwTQiAhIQG1tbU4cuQIysvLER4ejpiYGLS0tEj1SkpKMGvWLMTFxeGjjz7Cxx9/jNWrV8PN7f+6s2jRIpw7dw65ubnIzs5GYWEhVqxY0cvTJCLqZ0QfABCHDx+WtquqqgQAUVlZKZXZbDah0+nEK6+8IpVNnjxZbN68+YbtfvrppwKA+Pjjj6Wy48ePC5VKJb766qse9c1kMgkAwmQyyTgjIvksFovIysoSFovF1V0hhZOTaw79EpPZbAYADBgwQCpzc3ODRqNBcXExli9fjsuXL+P06dNYtGgR7r77btTU1GDkyJF47rnncO+99wK4dmfv7++PSZMmSe3ExMTAzc0Np0+fxoMPPtjtsTuPD1z7JhcAWK1WWK1WR54mkZ3O64vXGTmbnGvMoeE+cuRI6PV6pKWlYd++ffD29sbOnTtx8eJFNDQ0AABqa2sBAM8++yy2bduGcePG4c9//jPuv/9+VFZWYvjw4TAYDAgMDLTvqIcHAgICYDAYuj12eno6tmzZ0qU8JycHWq3WkadJ1K3Ox+sROUtra2uP6zo03NVqNTIzM5GUlISAgAC4u7sjJiYG8fHx0lNrOjo6AAC//vWv8eijjwIAxo8fjw8++ACvv/460tPTe3XstLQ0pKamSttNTU0ICwtDXFwc15Yhp7JarcjNzUVsbCyXHyCn6hyR6AmHry0zceJEVFRUwGQywWKxQKfTYfLkydIQy5AhQwAAo0ePtnvfqFGjpCfXBAcH4/Lly3b729vbceXKFQQHB3d7XI1GA41G06VcrVbzF45uCl5r5Gxyri+nzXP38/ODTqdDdXU1zpw5g3nz5gEAhg4dipCQEFRVVdnV//zzzxEeHg4AiI6ORmNjI8rKyqT9eXl56OjowOTJk53VZSIixZB9597c3Izz589L23V1daioqEBAQAD0ej0yMjKg0+mg1+tx9uxZrFmzBgkJCYiLiwMAqFQqbNiwAc888wzGjh2LcePG4eDBg/jHP/6BQ4cOAbh2Fz9r1iz86le/wp/+9CdYrVasXr0av/jFLxASEuKgUyciUjC5U3Hy8/MFgC6vJUuWCCGE2LVrlwgNDRVqtVro9XqxefNmYTabu7STnp4uQkNDhVarFdHR0aKoqMhu/7fffisWLlwoBg4cKHx9fcWjjz4qrl692uN+ciok3SycCkk3i5xc48M6iPrIarXi2LFjXM+dnI7PUCW6SWw2GwoKClBYWIiCggLYbDZXd4kIAMOdqNcyMzMRGRmJ2NhY7NixA7GxsYiMjERmZqaru0bEcCfqjczMTCxYsABRUVEoKirCW2+9haKiIkRFRWHBggUMeHI5jrkTyWSz2RAZGYmoqChkZWXBZrNJY+7u7u5ISEhAZWUlqqur4e7u7urukoJwzJ3IiYqKinDhwgVs2rTJbiVT4NpaSmlpaairq0NRUZGLekjEcCeSrXOdpDFjxnS7v7O8sx6RKzDciWTqXEKjsrKy2/2d5Z31iFyB4U4k05QpUzB06FA8//zz0kJ4nTo6OpCeno6IiAhMmTLFRT0kYrgTyebu7o7t27cjOzsbCQkJKC0tRVtbG0pLS5GQkIDs7Gxs27aNH6aSSzl8VUii/iAxMRGHDh3CunXrMHXqVKk8IiIChw4dQmJiogt7R8SpkER9YrPZkJ+fj+PHjyM+Ph7Tp0/nHTs5jZxc4507UR+4u7tj2rRpaGlpwbRp0xjs9KPBMXciIgViuBMRKRDDnYhIgRjuRH3Q1taGJ554As8++yyeeOIJtLW1ubpLRAA4W4ao1xISEnDkyJEu5fPmzUNWVtbN7xApHhcOI3KyzmD39PTExo0bsXfvXmzcuBGenp44cuQIEhISXN1F6ud4504kU1tbG7RaLTw9PXH16lWoVCppyV8hBHx8fGCxWNDa2govLy9Xd5cUhHfuRE60YcMGAEBqaio8PT3t9nl6emLt2rV29YhcgeFOJFN1dTUAYPny5d3uT0pKsqtH5AoMdyKZhg8fDgB49dVXu93/2muv2dUjcgWOuRPJxDF3chWOuRM5kZeXF+bNmweLxQIfHx9s2rQJX331FTZt2iQF+7x58xjs5FK8cyfqJc5zp5uNd+5EN0FWVhZaW1vx2GOPYdy4cXjsscfQ2trKYKcfBS75S9QHXl5e2L17tzTmrlarXd0lIgC8cyciUiTZ4V5YWIi5c+ciJCQEKpWqy39BjUYjli5dipCQEGi1WsyaNavLfN/77rsPKpXK7vXYY4/Z1amvr8ecOXOg1WoRGBiIDRs2oL29Xf4ZEhH1Q7LDvaWlBWPHjsWePXu67BNCICEhAbW1tThy5AjKy8sRHh6OmJgYtLS02NX91a9+hYaGBum1detWaZ/NZsOcOXNgsVhw6tQpHDx4EAcOHMDTTz/di1MkIup/ZI+5x8fHIz4+vtt91dXVKC0tRWVlJW6//XYAwN69exEcHIy33nrL7ht9Wq0WwcHB3baTk5ODTz/9FH/7298QFBSEcePG4Xe/+x2efPJJPPvss12+8k1ERPYc+oGq2WwGAAwYMEAqc3Nzg0ajQXFxsV24/+Uvf8Ebb7yB4OBgzJ07F0899RS0Wi0AoKSkBFFRUQgKCpLqz5w5EytXrsS5c+cwfvz4bo/deXzg2pQhALBarbBarY48TSI7ndcXrzNyNjnXmEPDfeTIkdDr9UhLS8O+ffvg7e2NnTt34uLFi2hoaJDqPfLIIwgPD0dISAg++eQTPPnkk6iqqkJmZiYAwGAw2AU7AGnbYDB0e+z09HRs2bKlS3lOTo70jwaRM+Xm5rq6C6Rwra2tPa7r0HBXq9XIzMxEUlISAgIC4O7ujpiYGMTHx+P670qtWLFC+jkqKgpDhgzB/fffj5qaGgwbNqxXx05LS0Nqaqq03dTUhLCwMMTFxfFLTORUVqsVubm5iI2N5VRIcqrOEYmecPg894kTJ6KiogImkwkWiwU6nQ6TJ0/GpEmTbvieyZMnAwDOnz+PYcOGITg4GB999JFdHaPRCAA3HKfXaDTQaDRdytVqNX/h6KbgtUbOJuf6cto8dz8/P+h0OlRXV+PMmTOYN2/eDetWVFQAAIYMGQIAiI6OxtmzZ3H58mWpTm5uLnx9fTF69GhndZmISDFk37k3Nzfj/Pnz0nZdXR0qKioQEBAAvV6PjIwM6HQ66PV6nD17FmvWrEFCQgLi4uIAADU1NXjzzTcxe/ZsDBo0CJ988glSUlIwdepU3HHHHQCAuLg4jB49GosXL8bWrVthMBiwefNmJCcnd3t3TkRE3yNkys/PFwC6vJYsWSKEEGLXrl0iNDRUqNVqodfrxebNm4XZbJbeX19fL6ZOnSoCAgKERqMRkZGRYsOGDcJkMtkd58KFCyI+Pl54eXmJwYMHi3Xr1gmr1drjfppMJgGgS7tEjmaxWERWVpawWCyu7gopnJxc46qQRH1ktVq5tgzdFFwVkoion2O4ExEpEMOdiEiBGO5ERArEcCciUiCGOxGRAjHciYgUiOFORKRADHciIgViuBMRKRDDnYhIgRjuREQKxHAnIlIghjsRkQIx3ImIFIjhTtQHNpsNBQUFKCwsREFBAWw2m6u7RASA4U7Ua5mZmYiMjERsbCx27NiB2NhYREZGIjMz09VdI2K4E/VGZmYmFixYgKioKBQVFeGtt95CUVERoqKisGDBAgY8uRwfs0ckk81mQ2RkJKKiopCVlQWbzSY9Zs/d3R0JCQmorKxEdXU13N3dXd1dUhA+Zo/IiYqKinDhwgVs2rQJbm72v0Jubm5IS0tDXV0dioqKXNRDIoY7kWwNDQ0AgDFjxnS7v7O8sx6RKzDciWQaMmQIAKCysrLb/Z3lnfWIXIHhTiTTlClTMHToUDz//PPo6Oiw29fR0YH09HRERERgypQpLuohEcOdSDZ3d3ds374d2dnZSEhIQGlpKdra2lBaWoqEhARkZ2dj27Zt/DCVXMrD1R0g+ilKTEzEoUOHsG7dOkydOlUqj4iIwKFDh5CYmOjC3hFxKiRRn9hsNuTn5+P48eOIj4/H9OnTecdOTiMn13jnTtQH7u7umDZtGlpaWjBt2jQGO/1ocMydiEiBZId7YWEh5s6di5CQEKhUKmRlZdntNxqNWLp0KUJCQqDVajFr1ixUV1d325YQAvHx8d22U19fjzlz5kCr1SIwMBAbNmxAe3u73O4SEfVLssO9paUFY8eOxZ49e7rsE0IgISEBtbW1OHLkCMrLyxEeHo6YmBi0tLR0qf8f//EfUKlUXcptNhvmzJkDi8WCU6dO4eDBgzhw4ACefvppud0lIuqfRB8AEIcPH5a2q6qqBABRWVkpldlsNqHT6cQrr7xi997y8nJx6623ioaGhi7tHDt2TLi5uQmDwSCV7d27V/j6+gqz2dyjvplMJgFAmEym3p0cUQ9ZLBaRlZUlLBaLq7tCCicn1xz6garZbAYADBgwQCpzc3ODRqNBcXExli9fDgBobW3FI488gj179iA4OLhLOyUlJYiKikJQUJBUNnPmTKxcuRLnzp3D+PHjuz125/GBa58qA4DVaoXVanXMCRJ1o/P64nVGzibnGnNouI8cORJ6vR5paWnYt28fvL29sXPnTly8eNFunY2UlBTcfffdmDdvXrftGAwGu2AHIG0bDIZu35Oeno4tW7Z0Kc/JyYFWq+3tKRH1WG5urqu7QArX2tra47oODXe1Wo3MzEwkJSUhICAA7u7uiImJQXx8PMT/Tqd/7733kJeXh/LyckceGmlpaUhNTZW2m5qaEBYWhri4OM5zJ6eyWq3Izc1FbGws1Gq1q7tDCtY5ItETDp/nPnHiRFRUVMBkMsFisUCn02Hy5MmYNGkSACAvLw81NTXw9/e3e9/8+fMxZcoUnDx5EsHBwfjoo4/s9huNRgDodhgHADQaDTQajbTd+Y9JW1sbf+HIqaxWK1pbW9HW1sYZXeRUbW1tAP4v335QXwb38b0PQrvz+eefCzc3N3HixAkhhBANDQ3i7Nmzdi8AYteuXaK2tlYI8X8fqBqNRqmdffv2CV9fX/Hdd9/1qG9ffvmlAMAXX3zxpbjXl19++U8zUPade3NzM86fPy9t19XVoaKiAgEBAdDr9cjIyIBOp4Ner8fZs2exZs0aJCQkIC4uDsC1O+/u7r71ej0iIiIAAHFxcRg9ejQWL16MrVu3wmAwYPPmzUhOTra7O/8hISEh+PLLL+Hj49PtdEsiR+kcAvzyyy85BEhOJYTA1atXERIS0qPKsuTn53f7L8mSJUuEEELs2rVLhIaGCrVaLfR6vdi8efM/nb4IdP0fwIULF0R8fLzw8vISgwcPFuvWrRNWq1Vud4mcjtNu6cdIsQuHEd0sXKSOfoy4tgwRkQIx3In6SKPR4Jlnnunx50FENwOHZYiIFIh37kRECsRwJyJSIIY7EZECMdyJiBSI4U7UQ0uXLkVCQoKru0HUIwx3+klbunQpVCoVVCoVPD09ERkZid/+9rdcwIv6PYY7/eTNmjULDQ0NqK6uxrp16/Dss8/ihRde6LauxWK5yb27+frDOdI/x3CnnzyNRoPg4GCEh4dj5cqViImJwXvvvQfg/4ZSnnvuOYSEhGDEiBEAgLNnz2LGjBnw8vLCoEGDsGLFCjQ3N0tt2mw2pKamwt/fH4MGDcLGjRt7tszqdZYtW4Z/+Zd/sSuzWq0IDAzEa6+9BgDo6OhAeno6IiIi4OXlhbFjx+LQoUN2/UhKSpL2jxgxArt27bJr80bnSP2bw9dzJ3I1Ly8vfPvtt9L2Bx98AF9fX+lJSS0tLZg5cyaio6Px8ccf4/Lly1i+fDlWr16NAwcOAAC2b9+OAwcO4PXXX8eoUaOwfft2HD58GDNmzOhxP5YvX46pU6eioaEBQ4YMAQBkZ2ejtbUVDz/8MIBrTxB744038Kc//QnDhw9HYWEh/vVf/xU6nQ7Tpk1DR0cHQkNDkZGRgUGDBuHUqVNYsWIFhgwZgoceeuiG50jUp/XciVxtyZIlYt68eUIIITo6OkRubq7QaDRi/fr10v6goCC7lUlffvllccstt4jm5map7OjRo3YPZR8yZIjYunWrtN9qtYrQ0FDpWD01evRo8Yc//EHanjt3rli6dKkQQojvvvtOaLVacerUKbv3JCUliYULF96wzeTkZDF//ny7v4PvnyMR79zpJy87OxsDBw6E1WpFR0cHHnnkETz77LPS/qioKHh6ekrbn332GcaOHQtvb2+p7J577kFHRweqqqowYMAANDQ0YPLkydJ+Dw8PTJo0SfbQzPLly/Hyyy9j48aNMBqNOH78OPLy8gAA58+fR2trK2JjY+3eY7FY7B4Cv2fPHrz++uuor69HW1sbLBYLxo0bZ/ee758jEcOdfvKmT5+OvXv3wtPTEyEhIfDwsL+srw/xm+2Xv/wlfvOb36CkpASnTp1CREQEpkyZAgDSGP/Ro0dx66232r2vcxGy//qv/8L69euxfft2REdHw8fHBy+88AJOnz5tV9+V50g/Tgx3+snz9vZGZGRkj+uPGjUKBw4cQEtLixSKH374Idzc3DBixAj4+flhyJAhOH36NKZOnQoAaG9vR1lZGSZMmCCrb4MGDUJCQgL279+PkpISPProo9K+0aNHQ6PRoL6+HtOmTev2/R9++CHuvvturFq1SiqrqamR1QfqnzhbhvqdRYsWYcCAAViyZAkqKyuRn5+Pxx9/HIsXL0ZQUBAAYM2aNfj973+PrKws/OMf/8CqVavQ2Nho186LL76I+++//58eb/ny5Th48CA+++wzLFmyRCr38fHB+vXrkZKSgoMHD6KmpgZ///vf8cc//hEHDx4EAAwfPhxnzpzBiRMn8Pnnn+Opp57Cxx9/7Li/DFIs3rlTv6PVanHixAmsWbMGd955J7RaLebPn48dO3ZIddatW4eGhgYsWbIEbm5uWLZsGR588EGYTCapzjfffNOju+iYmBgMGTIEt99+e5dnX/7ud7+DTqdDeno6amtr4e/vjwkTJmDTpk0AgF//+tcoLy/Hww8/DJVKhYULF2LVqlU4fvy4g/42SKm4njuRkzU3N+PWW2/F/v37kZiY6OruUD/BO3ciJ+no6MA333yD7du3w9/fHw888ICru0T9CMOdyEnq6+sRERGB0NBQHDhwoMssHiJn4rAMEZECcbYMEZECMdyJiBSI4U5EpEAMdyIiBWK4ExEpEMOdiEiBGO5ERArEcCciUqD/D3c0IrKv97mgAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"numeric_features_with_outliers = [\n",
" \"Price\",\n",
" \"Levy\",\n",
" \"Mileage\",\n",
" \"Prod. year\",\n",
"]\n",
"\n",
"i = 1\n",
"for col in numeric_features_with_outliers:\n",
" plt.figure(figsize=(4, 30))\n",
" plt.subplot(6, 1, i)\n",
" df.boxplot(column=col)\n",
" i += 1"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Количество строк до удаления выбросов: 14801\n",
"Количество строк после удаления выбросов: 12597\n"
]
}
],
"source": [
"def remove_outliers(df, column):\n",
" Q1 = df[column].quantile(0.25)\n",
" Q3 = df[column].quantile(0.75)\n",
" IQR = Q3 - Q1\n",
" lower_bound = Q1 - 1.5 * IQR\n",
" upper_bound = Q3 + 1.5 * IQR\n",
" return df[(df[column] >= lower_bound) & (df[column] <= upper_bound)]\n",
"\n",
"print(f\"Количество строк до удаления выбросов: {len(df)}\")\n",
"\n",
"for column in numeric_features_with_outliers:\n",
" df = remove_outliers(df, column)\n",
"\n",
"print(f\"Количество строк после удаления выбросов: {len(df)}\")"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"i = 1\n",
"for col in numeric_features_with_outliers:\n",
" plt.figure(figsize=(4, 30))\n",
" plt.subplot(6, 1, i)\n",
" df.boxplot(column=col)\n",
" i += 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разбиение на выборки"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Размеры выборок:\n",
"Обучающая выборка: 8817 записей\n",
"Category\n",
"Sedan 3954\n",
"Jeep 2263\n",
"Hatchback 1554\n",
"Minivan 312\n",
"Coupe 251\n",
"Universal 180\n",
"Microbus 143\n",
"Goods wagon 120\n",
"Pickup 22\n",
"Cabriolet 16\n",
"Limousine 2\n",
"Name: count, dtype: int64\n",
"Тестовая выборка: 3780 записей\n",
"Category\n",
"Sedan 1692\n",
"Jeep 990\n",
"Hatchback 636\n",
"Minivan 151\n",
"Coupe 117\n",
"Universal 82\n",
"Goods wagon 52\n",
"Microbus 46\n",
"Pickup 8\n",
"Cabriolet 5\n",
"Limousine 1\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"X = df\n",
"y = df[\"Category\"]\n",
"\n",
"train_df, test_df, y_train, y_test = train_test_split(\n",
" X, y, test_size=0.3, random_state=42\n",
")\n",
"\n",
"print(\"Размеры выборок:\")\n",
"print(f\"Обучающая выборка: {train_df.shape[0]} записей\")\n",
"print(train_df.Category.value_counts())\n",
"print(f\"Тестовая выборка: {test_df.shape[0]} записей\")\n",
"print(test_df.Category.value_counts())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Oversampling"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Размеры выборок:\n",
"Обучающая выборка: 43494 записей\n",
"Category\n",
"Sedan 3954\n",
"Jeep 3954\n",
"Universal 3954\n",
"Hatchback 3954\n",
"Coupe 3954\n",
"Goods wagon 3954\n",
"Minivan 3954\n",
"Microbus 3954\n",
"Pickup 3954\n",
"Limousine 3954\n",
"Cabriolet 3954\n",
"Name: count, dtype: int64\n",
"Тестовая выборка: 18612 записей\n",
"Category\n",
"Hatchback 1692\n",
"Sedan 1692\n",
"Universal 1692\n",
"Jeep 1692\n",
"Coupe 1692\n",
"Minivan 1692\n",
"Goods wagon 1692\n",
"Microbus 1692\n",
"Pickup 1692\n",
"Cabriolet 1692\n",
"Limousine 1692\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"def oversample(df):\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) # type: ignore\n",
"\n",
" resampled_df = pd.concat([X_resampled, y_resampled], axis=1)\n",
" return resampled_df\n",
"\n",
"\n",
"train_df_overs = oversample(train_df)\n",
"test_df_overs = oversample(test_df)\n",
"\n",
"print(\"Размеры выборок:\")\n",
"print(f\"Обучающая выборка: {train_df_overs.shape[0]} записей\")\n",
"print(train_df_overs.Category.value_counts())\n",
"print(f\"Тестовая выборка: {test_df_overs.shape[0]} записей\")\n",
"print(test_df_overs.Category.value_counts())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Ручной синтез признаков."
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"def age_create(df): \n",
" df[\"Age\"] = 2020 - df[\"Prod. year\"]\n",
" df = df.drop(\"Prod. year\", axis=1)\n",
" return df\n",
"\n",
"train_df = age_create(train_df)\n",
"test_df = age_create(test_df)"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
" 17, 18, 19, 20, 21])"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_df = train_df.sort_values(by=\"Age\")\n",
"sorted_df[\"Age\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 400x3000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(4, 30))\n",
"plt.subplot(6, 1, i)\n",
"train_df.boxplot(column=\"Age\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Дискретизация числовых признаков"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price int64\n",
"Levy int64\n",
"Manufacturer object\n",
"Model object\n",
"Category object\n",
"Leather interior object\n",
"Fuel type object\n",
"Engine volume float64\n",
"Mileage int64\n",
"Cylinders int64\n",
"Gear box type object\n",
"Drive wheels object\n",
"Doors object\n",
"Wheel object\n",
"Color object\n",
"Airbags int64\n",
"Age int64\n",
"dtype: object"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Price</th>\n",
" <th>Levy</th>\n",
" <th>Manufacturer</th>\n",
" <th>Model</th>\n",
" <th>Category</th>\n",
" <th>Leather interior</th>\n",
" <th>Fuel type</th>\n",
" <th>Engine volume</th>\n",
" <th>Mileage</th>\n",
" <th>Cylinders</th>\n",
" <th>Gear box type</th>\n",
" <th>Drive wheels</th>\n",
" <th>Doors</th>\n",
" <th>Wheel</th>\n",
" <th>Color</th>\n",
" <th>Airbags</th>\n",
" <th>Age</th>\n",
" <th>Age_bin</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>15146</th>\n",
" <td>18503</td>\n",
" <td>0</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>Sedan</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.8</td>\n",
" <td>13000</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>White</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>Новый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14145</th>\n",
" <td>9722</td>\n",
" <td>0</td>\n",
" <td>TOYOTA</td>\n",
" <td>Ractis</td>\n",
" <td>Sedan</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.5</td>\n",
" <td>116800</td>\n",
" <td>4</td>\n",
" <td>Tiptronic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Right-hand drive</td>\n",
" <td>Brown</td>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>Старый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8943</th>\n",
" <td>15367</td>\n",
" <td>584</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Elantra</td>\n",
" <td>Sedan</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.8</td>\n",
" <td>78222</td>\n",
" <td>4</td>\n",
" <td>Tiptronic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Beige</td>\n",
" <td>10</td>\n",
" <td>6</td>\n",
" <td>Средний</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17889</th>\n",
" <td>11917</td>\n",
" <td>0</td>\n",
" <td>SUBARU</td>\n",
" <td>Forester L.L.BEAN</td>\n",
" <td>Jeep</td>\n",
" <td>Yes</td>\n",
" <td>CNG</td>\n",
" <td>2.5</td>\n",
" <td>220000</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>4x4</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Green</td>\n",
" <td>5</td>\n",
" <td>16</td>\n",
" <td>Очень старый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9515</th>\n",
" <td>46919</td>\n",
" <td>1327</td>\n",
" <td>HYUNDAI</td>\n",
" <td>H1</td>\n",
" <td>Universal</td>\n",
" <td>Yes</td>\n",
" <td>Diesel</td>\n",
" <td>2.5</td>\n",
" <td>71689</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>Новый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18201</th>\n",
" <td>10349</td>\n",
" <td>0</td>\n",
" <td>AUDI</td>\n",
" <td>A4</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>2.4</td>\n",
" <td>150000</td>\n",
" <td>6</td>\n",
" <td>Manual</td>\n",
" <td>4x4</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" <td>13</td>\n",
" <td>Старый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7436</th>\n",
" <td>2038</td>\n",
" <td>765</td>\n",
" <td>KIA</td>\n",
" <td>Avella</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>2.0</td>\n",
" <td>125621</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>12</td>\n",
" <td>5</td>\n",
" <td>Новый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7728</th>\n",
" <td>13485</td>\n",
" <td>843</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>Hatchback</td>\n",
" <td>No</td>\n",
" <td>Hybrid</td>\n",
" <td>1.5</td>\n",
" <td>212000</td>\n",
" <td>4</td>\n",
" <td>Variator</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>Старый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1136</th>\n",
" <td>15677</td>\n",
" <td>0</td>\n",
" <td>FORD</td>\n",
" <td>Fiesta</td>\n",
" <td>Sedan</td>\n",
" <td>No</td>\n",
" <td>Petrol</td>\n",
" <td>1.6</td>\n",
" <td>74800</td>\n",
" <td>4</td>\n",
" <td>Automatic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>Новый</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10640</th>\n",
" <td>16308</td>\n",
" <td>751</td>\n",
" <td>KIA</td>\n",
" <td>Optima EX</td>\n",
" <td>Sedan</td>\n",
" <td>Yes</td>\n",
" <td>Petrol</td>\n",
" <td>2.4</td>\n",
" <td>92000</td>\n",
" <td>12</td>\n",
" <td>Tiptronic</td>\n",
" <td>Front</td>\n",
" <td>Четырехдверный</td>\n",
" <td>Left wheel</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>Средний</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8817 rows × 18 columns</p>\n",
"</div>"
],
"text/plain": [
" Price Levy Manufacturer Model Category \\\n",
"15146 18503 0 TOYOTA Prius Sedan \n",
"14145 9722 0 TOYOTA Ractis Sedan \n",
"8943 15367 584 HYUNDAI Elantra Sedan \n",
"17889 11917 0 SUBARU Forester L.L.BEAN Jeep \n",
"9515 46919 1327 HYUNDAI H1 Universal \n",
"... ... ... ... ... ... \n",
"18201 10349 0 AUDI A4 Sedan \n",
"7436 2038 765 KIA Avella Sedan \n",
"7728 13485 843 TOYOTA Prius Hatchback \n",
"1136 15677 0 FORD Fiesta Sedan \n",
"10640 16308 751 KIA Optima EX Sedan \n",
"\n",
" Leather interior Fuel type Engine volume Mileage Cylinders \\\n",
"15146 No Petrol 1.8 13000 4 \n",
"14145 No Petrol 1.5 116800 4 \n",
"8943 No Petrol 1.8 78222 4 \n",
"17889 Yes CNG 2.5 220000 4 \n",
"9515 Yes Diesel 2.5 71689 4 \n",
"... ... ... ... ... ... \n",
"18201 Yes Petrol 2.4 150000 6 \n",
"7436 Yes Petrol 2.0 125621 4 \n",
"7728 No Hybrid 1.5 212000 4 \n",
"1136 No Petrol 1.6 74800 4 \n",
"10640 Yes Petrol 2.4 92000 12 \n",
"\n",
" Gear box type Drive wheels Doors Wheel Color \\\n",
"15146 Automatic Front Четырехдверный Left wheel White \n",
"14145 Tiptronic Front Четырехдверный Right-hand drive Brown \n",
"8943 Tiptronic Front Четырехдверный Left wheel Beige \n",
"17889 Automatic 4x4 Четырехдверный Left wheel Green \n",
"9515 Automatic Front Четырехдверный Left wheel Grey \n",
"... ... ... ... ... ... \n",
"18201 Manual 4x4 Четырехдверный Left wheel Grey \n",
"7436 Automatic Front Четырехдверный Left wheel Silver \n",
"7728 Variator Front Четырехдверный Left wheel Silver \n",
"1136 Automatic Front Четырехдверный Left wheel Silver \n",
"10640 Tiptronic Front Четырехдверный Left wheel Silver \n",
"\n",
" Airbags Age Age_bin \n",
"15146 4 0 Новый \n",
"14145 2 13 Старый \n",
"8943 10 6 Средний \n",
"17889 5 16 Очень старый \n",
"9515 4 2 Новый \n",
"... ... ... ... \n",
"18201 4 13 Старый \n",
"7436 12 5 Новый \n",
"7728 8 12 Старый \n",
"1136 8 4 Новый \n",
"10640 8 7 Средний \n",
"\n",
"[8817 rows x 18 columns]"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numeric_features_for_discritization = [\"Age\"]\n",
"\n",
"def discretize_features(df, features, bins=4, labels=[\"Новый\", \"Средний\", \"Старый\", \"Очень старый\"]):\n",
" for feature in features:\n",
" try:\n",
" df[f\"{feature}_bin\"] = pd.cut(df[feature], bins=bins, labels=labels) # type: ignore\n",
" except Exception as e:\n",
" print(f\"Ошибка при дискретизации признака {feature}: {e}\")\n",
" return df\n",
"\n",
"\n",
"train_df = discretize_features(train_df, numeric_features_for_discritization)\n",
"test_df = discretize_features(test_df, numeric_features_for_discritization)\n",
"\n",
"train_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Унитарное кодирование категориальных признаков"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price int64\n",
"Levy int64\n",
"Manufacturer object\n",
"Model object\n",
"Category object\n",
"Leather interior object\n",
"Fuel type object\n",
"Engine volume float64\n",
"Mileage int64\n",
"Cylinders int64\n",
"Gear box type object\n",
"Drive wheels object\n",
"Doors object\n",
"Wheel object\n",
"Color object\n",
"Airbags int64\n",
"Age int64\n",
"Age_bin category\n",
"dtype: object"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Price</th>\n",
" <th>Levy</th>\n",
" <th>Manufacturer</th>\n",
" <th>Model</th>\n",
" <th>Engine volume</th>\n",
" <th>Mileage</th>\n",
" <th>Cylinders</th>\n",
" <th>Color</th>\n",
" <th>Airbags</th>\n",
" <th>Age</th>\n",
" <th>...</th>\n",
" <th>Drive wheels_Rear</th>\n",
" <th>Doors_Двухдверный</th>\n",
" <th>Doors_Многодверный</th>\n",
" <th>Doors_Четырехдверный</th>\n",
" <th>Wheel_Left wheel</th>\n",
" <th>Wheel_Right-hand drive</th>\n",
" <th>Age_bin_Новый</th>\n",
" <th>Age_bin_Средний</th>\n",
" <th>Age_bin_Старый</th>\n",
" <th>Age_bin_Очень старый</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>15146</th>\n",
" <td>18503</td>\n",
" <td>0</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>1.8</td>\n",
" <td>13000</td>\n",
" <td>4</td>\n",
" <td>White</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14145</th>\n",
" <td>9722</td>\n",
" <td>0</td>\n",
" <td>TOYOTA</td>\n",
" <td>Ractis</td>\n",
" <td>1.5</td>\n",
" <td>116800</td>\n",
" <td>4</td>\n",
" <td>Brown</td>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8943</th>\n",
" <td>15367</td>\n",
" <td>584</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Elantra</td>\n",
" <td>1.8</td>\n",
" <td>78222</td>\n",
" <td>4</td>\n",
" <td>Beige</td>\n",
" <td>10</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17889</th>\n",
" <td>11917</td>\n",
" <td>0</td>\n",
" <td>SUBARU</td>\n",
" <td>Forester L.L.BEAN</td>\n",
" <td>2.5</td>\n",
" <td>220000</td>\n",
" <td>4</td>\n",
" <td>Green</td>\n",
" <td>5</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9515</th>\n",
" <td>46919</td>\n",
" <td>1327</td>\n",
" <td>HYUNDAI</td>\n",
" <td>H1</td>\n",
" <td>2.5</td>\n",
" <td>71689</td>\n",
" <td>4</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18201</th>\n",
" <td>10349</td>\n",
" <td>0</td>\n",
" <td>AUDI</td>\n",
" <td>A4</td>\n",
" <td>2.4</td>\n",
" <td>150000</td>\n",
" <td>6</td>\n",
" <td>Grey</td>\n",
" <td>4</td>\n",
" <td>13</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7436</th>\n",
" <td>2038</td>\n",
" <td>765</td>\n",
" <td>KIA</td>\n",
" <td>Avella</td>\n",
" <td>2.0</td>\n",
" <td>125621</td>\n",
" <td>4</td>\n",
" <td>Silver</td>\n",
" <td>12</td>\n",
" <td>5</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7728</th>\n",
" <td>13485</td>\n",
" <td>843</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>1.5</td>\n",
" <td>212000</td>\n",
" <td>4</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1136</th>\n",
" <td>15677</td>\n",
" <td>0</td>\n",
" <td>FORD</td>\n",
" <td>Fiesta</td>\n",
" <td>1.6</td>\n",
" <td>74800</td>\n",
" <td>4</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10640</th>\n",
" <td>16308</td>\n",
" <td>751</td>\n",
" <td>KIA</td>\n",
" <td>Optima EX</td>\n",
" <td>2.4</td>\n",
" <td>92000</td>\n",
" <td>12</td>\n",
" <td>Silver</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8817 rows × 46 columns</p>\n",
"</div>"
],
"text/plain": [
" Price Levy Manufacturer Model Engine volume Mileage \\\n",
"15146 18503 0 TOYOTA Prius 1.8 13000 \n",
"14145 9722 0 TOYOTA Ractis 1.5 116800 \n",
"8943 15367 584 HYUNDAI Elantra 1.8 78222 \n",
"17889 11917 0 SUBARU Forester L.L.BEAN 2.5 220000 \n",
"9515 46919 1327 HYUNDAI H1 2.5 71689 \n",
"... ... ... ... ... ... ... \n",
"18201 10349 0 AUDI A4 2.4 150000 \n",
"7436 2038 765 KIA Avella 2.0 125621 \n",
"7728 13485 843 TOYOTA Prius 1.5 212000 \n",
"1136 15677 0 FORD Fiesta 1.6 74800 \n",
"10640 16308 751 KIA Optima EX 2.4 92000 \n",
"\n",
" Cylinders Color Airbags Age ... Drive wheels_Rear \\\n",
"15146 4 White 4 0 ... False \n",
"14145 4 Brown 2 13 ... False \n",
"8943 4 Beige 10 6 ... False \n",
"17889 4 Green 5 16 ... False \n",
"9515 4 Grey 4 2 ... False \n",
"... ... ... ... ... ... ... \n",
"18201 6 Grey 4 13 ... False \n",
"7436 4 Silver 12 5 ... False \n",
"7728 4 Silver 8 12 ... False \n",
"1136 4 Silver 8 4 ... False \n",
"10640 12 Silver 8 7 ... False \n",
"\n",
" Doors_Двухдверный Doors_Многодверный Doors_Четырехдверный \\\n",
"15146 False False True \n",
"14145 False False True \n",
"8943 False False True \n",
"17889 False False True \n",
"9515 False False True \n",
"... ... ... ... \n",
"18201 False False True \n",
"7436 False False True \n",
"7728 False False True \n",
"1136 False False True \n",
"10640 False False True \n",
"\n",
" Wheel_Left wheel Wheel_Right-hand drive Age_bin_Новый \\\n",
"15146 True False True \n",
"14145 False True False \n",
"8943 True False False \n",
"17889 True False False \n",
"9515 True False True \n",
"... ... ... ... \n",
"18201 True False False \n",
"7436 True False True \n",
"7728 True False False \n",
"1136 True False True \n",
"10640 True False False \n",
"\n",
" Age_bin_Средний Age_bin_Старый Age_bin_Очень старый \n",
"15146 False False False \n",
"14145 False True False \n",
"8943 True False False \n",
"17889 False False True \n",
"9515 False False False \n",
"... ... ... ... \n",
"18201 False True False \n",
"7436 False False False \n",
"7728 False True False \n",
"1136 False False False \n",
"10640 True False False \n",
"\n",
"[8817 rows x 46 columns]"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"categorical_features_for_encoding = [\n",
" \"Leather interior\",\n",
" \"Category\",\n",
" \"Fuel type\",\n",
" \"Gear box type\",\n",
" \"Drive wheels\",\n",
" \"Doors\",\n",
" \"Wheel\",\n",
" \"Age_bin\",\n",
"]\n",
"\n",
"train_df = pd.get_dummies(train_df, columns=categorical_features_for_encoding)\n",
"test_df = pd.get_dummies(test_df, columns=categorical_features_for_encoding)\n",
"\n",
"train_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Масштабирование признаков"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Price int64\n",
"Levy int64\n",
"Manufacturer object\n",
"Model object\n",
"Engine volume float64\n",
"Mileage int64\n",
"Cylinders int64\n",
"Color object\n",
"Airbags int64\n",
"Age int64\n",
"Leather interior_No bool\n",
"Leather interior_Yes bool\n",
"Category_Cabriolet bool\n",
"Category_Coupe bool\n",
"Category_Goods wagon bool\n",
"Category_Hatchback bool\n",
"Category_Jeep bool\n",
"Category_Limousine bool\n",
"Category_Microbus bool\n",
"Category_Minivan bool\n",
"Category_Pickup bool\n",
"Category_Sedan bool\n",
"Category_Universal bool\n",
"Fuel type_CNG bool\n",
"Fuel type_Diesel bool\n",
"Fuel type_Hybrid bool\n",
"Fuel type_Hydrogen bool\n",
"Fuel type_LPG bool\n",
"Fuel type_Petrol bool\n",
"Fuel type_Plug-in Hybrid bool\n",
"Gear box type_Automatic bool\n",
"Gear box type_Manual bool\n",
"Gear box type_Tiptronic bool\n",
"Gear box type_Variator bool\n",
"Drive wheels_4x4 bool\n",
"Drive wheels_Front bool\n",
"Drive wheels_Rear bool\n",
"Doors_Двухдверный bool\n",
"Doors_Многодверный bool\n",
"Doors_Четырехдверный bool\n",
"Wheel_Left wheel bool\n",
"Wheel_Right-hand drive bool\n",
"Age_bin_Новый bool\n",
"Age_bin_Средний bool\n",
"Age_bin_Старый bool\n",
"Age_bin_Очень старый bool\n",
"dtype: object"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Price</th>\n",
" <th>Levy</th>\n",
" <th>Manufacturer</th>\n",
" <th>Model</th>\n",
" <th>Engine volume</th>\n",
" <th>Mileage</th>\n",
" <th>Cylinders</th>\n",
" <th>Color</th>\n",
" <th>Airbags</th>\n",
" <th>Age</th>\n",
" <th>...</th>\n",
" <th>Drive wheels_Rear</th>\n",
" <th>Doors_Двухдверный</th>\n",
" <th>Doors_Многодверный</th>\n",
" <th>Doors_Четырехдверный</th>\n",
" <th>Wheel_Left wheel</th>\n",
" <th>Wheel_Right-hand drive</th>\n",
" <th>Age_bin_Новый</th>\n",
" <th>Age_bin_Средний</th>\n",
" <th>Age_bin_Старый</th>\n",
" <th>Age_bin_Очень старый</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>15146</th>\n",
" <td>0.153774</td>\n",
" <td>-1.192982</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>-0.479341</td>\n",
" <td>-1.531744</td>\n",
" <td>-0.403213</td>\n",
" <td>White</td>\n",
" <td>-0.683755</td>\n",
" <td>-1.946936</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14145</th>\n",
" <td>-0.658018</td>\n",
" <td>-1.192982</td>\n",
" <td>TOYOTA</td>\n",
" <td>Ractis</td>\n",
" <td>-0.887855</td>\n",
" <td>-0.130245</td>\n",
" <td>-0.403213</td>\n",
" <td>Brown</td>\n",
" <td>-1.190217</td>\n",
" <td>0.879266</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8943</th>\n",
" <td>-0.136145</td>\n",
" <td>0.081576</td>\n",
" <td>HYUNDAI</td>\n",
" <td>Elantra</td>\n",
" <td>-0.479341</td>\n",
" <td>-0.651122</td>\n",
" <td>-0.403213</td>\n",
" <td>Beige</td>\n",
" <td>0.835631</td>\n",
" <td>-0.642535</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17889</th>\n",
" <td>-0.455093</td>\n",
" <td>-1.192982</td>\n",
" <td>SUBARU</td>\n",
" <td>Forester L.L.BEAN</td>\n",
" <td>0.473858</td>\n",
" <td>1.263152</td>\n",
" <td>-0.403213</td>\n",
" <td>Green</td>\n",
" <td>-0.430524</td>\n",
" <td>1.531466</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9515</th>\n",
" <td>2.780795</td>\n",
" <td>1.703146</td>\n",
" <td>HYUNDAI</td>\n",
" <td>H1</td>\n",
" <td>0.473858</td>\n",
" <td>-0.739330</td>\n",
" <td>-0.403213</td>\n",
" <td>Grey</td>\n",
" <td>-0.683755</td>\n",
" <td>-1.512135</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18201</th>\n",
" <td>-0.600053</td>\n",
" <td>-1.192982</td>\n",
" <td>AUDI</td>\n",
" <td>A4</td>\n",
" <td>0.337687</td>\n",
" <td>0.318018</td>\n",
" <td>1.538421</td>\n",
" <td>Grey</td>\n",
" <td>-0.683755</td>\n",
" <td>0.879266</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7436</th>\n",
" <td>-1.368394</td>\n",
" <td>0.476602</td>\n",
" <td>KIA</td>\n",
" <td>Avella</td>\n",
" <td>-0.206998</td>\n",
" <td>-0.011145</td>\n",
" <td>-0.403213</td>\n",
" <td>Silver</td>\n",
" <td>1.342092</td>\n",
" <td>-0.859935</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7728</th>\n",
" <td>-0.310134</td>\n",
" <td>0.646834</td>\n",
" <td>TOYOTA</td>\n",
" <td>Prius</td>\n",
" <td>-0.887855</td>\n",
" <td>1.155137</td>\n",
" <td>-0.403213</td>\n",
" <td>Silver</td>\n",
" <td>0.329169</td>\n",
" <td>0.661866</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1136</th>\n",
" <td>-0.107486</td>\n",
" <td>-1.192982</td>\n",
" <td>FORD</td>\n",
" <td>Fiesta</td>\n",
" <td>-0.751684</td>\n",
" <td>-0.697325</td>\n",
" <td>-0.403213</td>\n",
" <td>Silver</td>\n",
" <td>0.329169</td>\n",
" <td>-1.077335</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10640</th>\n",
" <td>-0.049151</td>\n",
" <td>0.446048</td>\n",
" <td>KIA</td>\n",
" <td>Optima EX</td>\n",
" <td>0.337687</td>\n",
" <td>-0.465093</td>\n",
" <td>7.363324</td>\n",
" <td>Silver</td>\n",
" <td>0.329169</td>\n",
" <td>-0.425135</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8817 rows × 46 columns</p>\n",
"</div>"
],
"text/plain": [
" Price Levy Manufacturer Model Engine volume \\\n",
"15146 0.153774 -1.192982 TOYOTA Prius -0.479341 \n",
"14145 -0.658018 -1.192982 TOYOTA Ractis -0.887855 \n",
"8943 -0.136145 0.081576 HYUNDAI Elantra -0.479341 \n",
"17889 -0.455093 -1.192982 SUBARU Forester L.L.BEAN 0.473858 \n",
"9515 2.780795 1.703146 HYUNDAI H1 0.473858 \n",
"... ... ... ... ... ... \n",
"18201 -0.600053 -1.192982 AUDI A4 0.337687 \n",
"7436 -1.368394 0.476602 KIA Avella -0.206998 \n",
"7728 -0.310134 0.646834 TOYOTA Prius -0.887855 \n",
"1136 -0.107486 -1.192982 FORD Fiesta -0.751684 \n",
"10640 -0.049151 0.446048 KIA Optima EX 0.337687 \n",
"\n",
" Mileage Cylinders Color Airbags Age ... \\\n",
"15146 -1.531744 -0.403213 White -0.683755 -1.946936 ... \n",
"14145 -0.130245 -0.403213 Brown -1.190217 0.879266 ... \n",
"8943 -0.651122 -0.403213 Beige 0.835631 -0.642535 ... \n",
"17889 1.263152 -0.403213 Green -0.430524 1.531466 ... \n",
"9515 -0.739330 -0.403213 Grey -0.683755 -1.512135 ... \n",
"... ... ... ... ... ... ... \n",
"18201 0.318018 1.538421 Grey -0.683755 0.879266 ... \n",
"7436 -0.011145 -0.403213 Silver 1.342092 -0.859935 ... \n",
"7728 1.155137 -0.403213 Silver 0.329169 0.661866 ... \n",
"1136 -0.697325 -0.403213 Silver 0.329169 -1.077335 ... \n",
"10640 -0.465093 7.363324 Silver 0.329169 -0.425135 ... \n",
"\n",
" Drive wheels_Rear Doors_Двухдверный Doors_Многодверный \\\n",
"15146 False False False \n",
"14145 False False False \n",
"8943 False False False \n",
"17889 False False False \n",
"9515 False False False \n",
"... ... ... ... \n",
"18201 False False False \n",
"7436 False False False \n",
"7728 False False False \n",
"1136 False False False \n",
"10640 False False False \n",
"\n",
" Doors_Четырехдверный Wheel_Left wheel Wheel_Right-hand drive \\\n",
"15146 True True False \n",
"14145 True False True \n",
"8943 True True False \n",
"17889 True True False \n",
"9515 True True False \n",
"... ... ... ... \n",
"18201 True True False \n",
"7436 True True False \n",
"7728 True True False \n",
"1136 True True False \n",
"10640 True True False \n",
"\n",
" Age_bin_Новый Age_bin_Средний Age_bin_Старый Age_bin_Очень старый \n",
"15146 True False False False \n",
"14145 False False True False \n",
"8943 False True False False \n",
"17889 False False False True \n",
"9515 True False False False \n",
"... ... ... ... ... \n",
"18201 False False True False \n",
"7436 True False False False \n",
"7728 False False True False \n",
"1136 True False False False \n",
"10640 False True False False \n",
"\n",
"[8817 rows x 46 columns]"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scaler = StandardScaler()\n",
"\n",
"numeric_features_for_stardartization = [\n",
" \"Price\",\n",
" \"Levy\",\n",
" \"Engine volume\",\n",
" \"Mileage\",\n",
" \"Cylinders\",\n",
" \"Airbags\",\n",
" \"Age\",\n",
"]\n",
"\n",
"train_df[numeric_features_for_stardartization] = scaler.fit_transform(\n",
" train_df[numeric_features_for_stardartization]\n",
")\n",
"test_df[numeric_features_for_stardartization] = scaler.transform(\n",
" test_df[numeric_features_for_stardartization]\n",
")\n",
"\n",
"train_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Конструирование признаков с помощью Featuretools"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\Lib\\site-packages\\featuretools\\entityset\\entityset.py:1733: UserWarning: index id not found in dataframe, creating new integer column\n",
" warnings.warn(\n",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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",
"c:\\Users\\user\\source\\repos\\mai_pi-33_zakharov\\.venv\\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"
]
}
],
"source": [
"es = ft.EntitySet(id=\"car_data\")\n",
"es = es.add_dataframe(dataframe_name=\"train\", dataframe=train_df, index=\"id\")\n",
"feature_matrix, feature_defs = ft.dfs(\n",
" entityset=es,\n",
" target_dataframe_name=\"train\",\n",
" max_depth=1,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<Feature: Price>,\n",
" <Feature: Levy>,\n",
" <Feature: Manufacturer>,\n",
" <Feature: Model>,\n",
" <Feature: Engine volume>,\n",
" <Feature: Mileage>,\n",
" <Feature: Cylinders>,\n",
" <Feature: Color>,\n",
" <Feature: Airbags>,\n",
" <Feature: Age>,\n",
" <Feature: Leather interior_No>,\n",
" <Feature: Leather interior_Yes>,\n",
" <Feature: Category_Cabriolet>,\n",
" <Feature: Category_Coupe>,\n",
" <Feature: Category_Goods wagon>,\n",
" <Feature: Category_Hatchback>,\n",
" <Feature: Category_Jeep>,\n",
" <Feature: Category_Limousine>,\n",
" <Feature: Category_Microbus>,\n",
" <Feature: Category_Minivan>,\n",
" <Feature: Category_Pickup>,\n",
" <Feature: Category_Sedan>,\n",
" <Feature: Category_Universal>,\n",
" <Feature: Fuel type_CNG>,\n",
" <Feature: Fuel type_Diesel>,\n",
" <Feature: Fuel type_Hybrid>,\n",
" <Feature: Fuel type_Hydrogen>,\n",
" <Feature: Fuel type_LPG>,\n",
" <Feature: Fuel type_Petrol>,\n",
" <Feature: Fuel type_Plug-in Hybrid>,\n",
" <Feature: Gear box type_Automatic>,\n",
" <Feature: Gear box type_Manual>,\n",
" <Feature: Gear box type_Tiptronic>,\n",
" <Feature: Gear box type_Variator>,\n",
" <Feature: Drive wheels_4x4>,\n",
" <Feature: Drive wheels_Front>,\n",
" <Feature: Drive wheels_Rear>,\n",
" <Feature: Doors_Двухдверный>,\n",
" <Feature: Doors_Многодверный>,\n",
" <Feature: Doors_Четырехдверный>,\n",
" <Feature: Wheel_Left wheel>,\n",
" <Feature: Wheel_Right-hand drive>,\n",
" <Feature: Age_bin_Новый>,\n",
" <Feature: Age_bin_Средний>,\n",
" <Feature: Age_bin_Старый>,\n",
" <Feature: Age_bin_Очень старый>]"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_defs"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}