{ "cells": [ { "cell_type": "markdown", "metadata": { "vscode": { "languageId": "plaintext" } }, "source": [ "#### Загрузка набора данных" ] }, { "cell_type": "code", "execution_count": 1058, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \n", " \n", "
PriceLevyManufacturerModelProd. yearCategoryLeather interiorFuel typeEngine volumeMileageCylindersGear box typeDrive wheelsDoorsWheelColorAirbags
0133281399LEXUSRX 4502010JeepYesHybrid3.5186005 km6.0Automatic4x404-MayLeft wheelSilver12
1166211018CHEVROLETEquinox2011JeepNoPetrol3192000 km6.0Tiptronic4x404-MayLeft wheelBlack8
28467-HONDAFIT2006HatchbackNoPetrol1.3200000 km4.0VariatorFront04-MayRight-hand driveBlack2
33607862FORDEscape2011JeepYesHybrid2.5168966 km4.0Automatic4x404-MayLeft wheelWhite0
411726446HONDAFIT2014HatchbackYesPetrol1.391901 km4.0AutomaticFront04-MayLeft wheelSilver4
......................................................
192328467-MERCEDES-BENZCLK 2001999CoupeYesCNG2.0 Turbo300000 km4.0ManualRear02-MarLeft wheelSilver5
1923315681831HYUNDAISonata2011SedanYesPetrol2.4161600 km4.0TiptronicFront04-MayLeft wheelRed8
1923426108836HYUNDAITucson2010JeepYesDiesel2116365 km4.0AutomaticFront04-MayLeft wheelGrey4
1923553311288CHEVROLETCaptiva2007JeepYesDiesel251258 km4.0AutomaticFront04-MayLeft wheelBlack4
19236470753HYUNDAISonata2012SedanYesHybrid2.4186923 km4.0AutomaticFront04-MayLeft wheelWhite12
\n", "

19237 rows × 17 columns

\n", "
" ], "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": 1058, "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": 1059, "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": 1059, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 1060, "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": 1060, "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": 1061, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([186005, 192000, 200000, ..., 140607, 307325, 186923])" ] }, "execution_count": 1061, "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": 1062, "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": 1062, "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": 1063, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 4, 8, 1, 12, 3, 2, 16, 5, 7, 9, 10, 14])" ] }, "execution_count": 1063, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"Cylinders\"] = df[\"Cylinders\"].astype(\"int64\")\n", "df[\"Cylinders\"].unique()" ] }, { "cell_type": "code", "execution_count": 1064, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['04-May', '02-Mar', '>5'], dtype=object)" ] }, "execution_count": 1064, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"Doors\"].unique()" ] }, { "cell_type": "code", "execution_count": 1065, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Четырехдверный', 'Двухдверный', 'Многодверный'], dtype=object)" ] }, "execution_count": 1065, "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": 1066, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, 3, 6, ..., 627220, 872946, 26307500])" ] }, "execution_count": 1066, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_df = df.sort_values(by=\"Price\")\n", "sorted_df[\"Price\"].unique()" ] }, { "cell_type": "code", "execution_count": 1067, "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": 1068, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 500, 549, 600, ..., 627220, 872946, 26307500])" ] }, "execution_count": 1068, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_df = df.sort_values(by=\"Price\")\n", "sorted_df[\"Price\"].unique()" ] }, { "cell_type": "code", "execution_count": 1069, "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": 1069, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_df = df.sort_values(by=\"Prod. year\")\n", "sorted_df[\"Prod. year\"].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Ручной синтез признаков." ] }, { "cell_type": "code", "execution_count": 1070, "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, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n", " 34, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 52, 55, 56, 63, 67, 77])" ] }, "execution_count": 1070, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"Age\"] = 2020 - df[\"Prod. year\"]\n", "df = df.drop(\"Prod. year\", axis=1)\n", "sorted_df = df.sort_values(by=\"Age\")\n", "sorted_df[\"Age\"].unique()" ] }, { "cell_type": "code", "execution_count": 1071, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \n", " \n", "
PriceLevyManufacturerModelCategoryLeather interiorFuel typeEngine volumeMileageCylindersGear box typeDrive wheelsDoorsWheelColorAirbagsAge
0133281399LEXUSRX 450JeepYesHybrid3.51860056Automatic4x4ЧетырехдверныйLeft wheelSilver1210
1166211018CHEVROLETEquinoxJeepNoPetrol3.01920006Tiptronic4x4ЧетырехдверныйLeft wheelBlack89
284670HONDAFITHatchbackNoPetrol1.32000004VariatorFrontЧетырехдверныйRight-hand driveBlack214
33607862FORDEscapeJeepYesHybrid2.51689664Automatic4x4ЧетырехдверныйLeft wheelWhite09
411726446HONDAFITHatchbackYesPetrol1.3919014AutomaticFrontЧетырехдверныйLeft wheelSilver46
......................................................
1923158021055MERCEDES-BENZE 350SedanYesDiesel3.51078006AutomaticRearЧетырехдверныйLeft wheelGrey127
1923284670MERCEDES-BENZCLK 200CoupeYesCNG2.03000004ManualRearДвухдверныйLeft wheelSilver521
1923315681831HYUNDAISonataSedanYesPetrol2.41616004TiptronicFrontЧетырехдверныйLeft wheelRed89
1923426108836HYUNDAITucsonJeepYesDiesel2.01163654AutomaticFrontЧетырехдверныйLeft wheelGrey410
1923553311288CHEVROLETCaptivaJeepYesDiesel2.0512584AutomaticFrontЧетырехдверныйLeft wheelBlack413
\n", "

17574 rows × 17 columns

\n", "
" ], "text/plain": [ " Price Levy Manufacturer Model Category Leather interior \\\n", "0 13328 1399 LEXUS RX 450 Jeep Yes \n", "1 16621 1018 CHEVROLET Equinox Jeep No \n", "2 8467 0 HONDA FIT Hatchback No \n", "3 3607 862 FORD Escape Jeep Yes \n", "4 11726 446 HONDA FIT Hatchback Yes \n", "... ... ... ... ... ... ... \n", "19231 5802 1055 MERCEDES-BENZ E 350 Sedan Yes \n", "19232 8467 0 MERCEDES-BENZ CLK 200 Coupe Yes \n", "19233 15681 831 HYUNDAI Sonata Sedan Yes \n", "19234 26108 836 HYUNDAI Tucson Jeep Yes \n", "19235 5331 1288 CHEVROLET Captiva Jeep Yes \n", "\n", " Fuel type Engine volume Mileage Cylinders Gear box type Drive wheels \\\n", "0 Hybrid 3.5 186005 6 Automatic 4x4 \n", "1 Petrol 3.0 192000 6 Tiptronic 4x4 \n", "2 Petrol 1.3 200000 4 Variator Front \n", "3 Hybrid 2.5 168966 4 Automatic 4x4 \n", "4 Petrol 1.3 91901 4 Automatic Front \n", "... ... ... ... ... ... ... \n", "19231 Diesel 3.5 107800 6 Automatic Rear \n", "19232 CNG 2.0 300000 4 Manual Rear \n", "19233 Petrol 2.4 161600 4 Tiptronic Front \n", "19234 Diesel 2.0 116365 4 Automatic Front \n", "19235 Diesel 2.0 51258 4 Automatic Front \n", "\n", " Doors Wheel Color Airbags Age \n", "0 Четырехдверный Left wheel Silver 12 10 \n", "1 Четырехдверный Left wheel Black 8 9 \n", "2 Четырехдверный Right-hand drive Black 2 14 \n", "3 Четырехдверный Left wheel White 0 9 \n", "4 Четырехдверный Left wheel Silver 4 6 \n", "... ... ... ... ... ... \n", "19231 Четырехдверный Left wheel Grey 12 7 \n", "19232 Двухдверный Left wheel Silver 5 21 \n", "19233 Четырехдверный Left wheel Red 8 9 \n", "19234 Четырехдверный Left wheel Grey 4 10 \n", "19235 Четырехдверный Left wheel Black 4 13 \n", "\n", "[17574 rows x 17 columns]" ] }, "execution_count": 1071, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Очистка дубликатов и пропущенных значений" ] }, { "cell_type": "code", "execution_count": 1072, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(2773)" ] }, "execution_count": 1072, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 1073, "metadata": {}, "outputs": [], "source": [ "df.drop_duplicates(inplace=True)" ] }, { "cell_type": "code", "execution_count": 1074, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Price 0\n", "Levy 0\n", "Manufacturer 0\n", "Model 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", "Age 0\n", "dtype: int64" ] }, "execution_count": 1074, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Очистка выбросов" ] }, { "cell_type": "code", "execution_count": 1075, "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": 1075, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 1076, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numeric_features_with_outliers = [\n", " \"Price\",\n", " \"Levy\",\n", " \"Mileage\",\n", " \"Age\",\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": 1077, "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": 1078, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAF1CAYAAAD8ysHLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAc3klEQVR4nO3de3BU9eH38U8umyUhbEKAZImGgPqUACI3LcmIjkBMiJQRcaxcqggRpzTxN5hWKf1ZheoYRR8vraBjW6F/gCJ1tC1YmsjFVNiARIMhKhUGDAqbCDFZQmDZJef5wydb14BsYJfAl/drJhP2nO+e/R7n8M7x7GETZVmWJQCAMaK7egIAgPAi7ABgGMIOAIYh7ABgGMIOAIYh7ABgGMIOAIaJ7eoJREpbW5sOHDigHj16KCoqqqunAwDnzLIsHTlyROnp6YqOPv15ubFhP3DggDIyMrp6GgAQdvv379fll19+2vXGhr1Hjx6Svv0P4HA4ung2MJnP51NZWZny8vJks9m6ejowmMfjUUZGRqBvp2Ns2NsvvzgcDsKOiPL5fEpISJDD4SDsOC/OdHmZN08BwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDDGflYMcLZaW1v12WefhTy+5ZhXW2r2qGfv7UqMt4f0nKysLCUkJJztFIEfRNiB7/nss880atSoTj9vcSfGVlVVaeTIkZ1+DSAUhB34nqysLFVVVYU8ftfBJpWsrtGzdwzVwL7JIb8GECmEHfiehISETp1NR39xWPZ/H9Ogq4dpeGavCM4MCA1vngKAYQg7ABiGsAOAYQg7ABiGsAOAYToV9tLSUl133XXq0aOHUlNTNXnyZO3atStozPHjx1VUVKRevXopMTFRt99+u+rr64PG1NXVaeLEiUpISFBqaqoefPBB+f3+oDGbNm3SyJEjZbfbddVVV2n58uVnt4cAcInpVNjfe+89FRUVqbKyUuXl5fL5fMrLy9PRo0cDYx544AH94x//0OrVq/Xee+/pwIEDmjJlSmD9yZMnNXHiRJ04cUJbtmzRX/7yFy1fvlyPPPJIYMzevXs1ceJEjR07VtXV1Zo3b57uvfde/etf/wrDLgOA4axz0NDQYEmy3nvvPcuyLKupqcmy2WzW6tWrA2M+/fRTS5Llcrksy7Ksd955x4qOjrbcbndgzEsvvWQ5HA7L6/ValmVZDz30kDVkyJCg17rzzjut/Pz8kOfW3NxsSbKam5vPev+AUHy075CVOX+N9dG+Q109FRgu1K6d0z9Qam5uliSlpKRI+vafSft8PuXm5gbGZGVlqV+/fnK5XMrOzpbL5dLQoUOVlpYWGJOfn6+5c+eqtrZWI0aMkMvlCtpG+5h58+addi5er1derzfw2OPxSJJ8Pp98Pt+57Cbwg9ovI/r9fo41RFSox9dZh72trU3z5s3T9ddfr6uvvlqS5Ha7FRcXp+Tk5KCxaWlpcrvdgTHfjXr7+vZ1PzTG4/Ho2LFjio+P7zCf0tJSLVq0qMPysrIyPmwJEbW/RZJiVVlZqa92dvVsYLLW1taQxp112IuKirRz5069//77Z7uJsFqwYIFKSkoCjz0ejzIyMpSXlyeHw9GFM4PpdtQ1SjXblZ2drWH9Urp6OjBY+5WIMzmrsBcXF2vNmjWqqKjQ5ZdfHljudDp14sQJNTU1BZ2119fXy+l0BsZs27YtaHvtd818d8z376Spr6+Xw+E45dm6JNntdtntHT8y1WazyWazdX4ngRDFxsYGvnOsIZJCPb46dVeMZVkqLi7WW2+9pQ0bNmjAgAFB60eNGiWbzab169cHlu3atUt1dXXKycmRJOXk5KimpkYNDQ2BMeXl5XI4HBo8eHBgzHe30T6mfRsAgNPr1Bl7UVGRVq5cqb/97W/q0aNH4Jp4UlKS4uPjlZSUpMLCQpWUlCglJUUOh0P333+/cnJylJ2dLUnKy8vT4MGDddddd2nx4sVyu916+OGHVVRUFDjj/vnPf64XX3xRDz30kGbPnq0NGzbojTfe0Nq1a8O8+wBgoM7caiPplF/Lli0LjDl27Jj1i1/8wurZs6eVkJBg3XbbbdbBgweDtrNv3z6roKDAio+Pt3r37m398pe/tHw+X9CYjRs3WsOHD7fi4uKsK664Iug1QsHtjjhfuN0R50uoXYuyLMvquh8rkePxeJSUlKTm5mbePEVEVX9xWJNfqtTbc7P5PHZEVKhd47NiAMAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYAcAwnQ57RUWFJk2apPT0dEVFRentt98OWn/PPfcoKioq6GvChAlBYxobGzVjxgw5HA4lJyersLBQLS0tQWM+/vhj3XDDDerWrZsyMjK0ePHizu8dAFyCOh32o0ePatiwYVqyZMlpx0yYMEEHDx4MfL322mtB62fMmKHa2lqVl5drzZo1qqio0H333RdY7/F4lJeXp8zMTFVVVenpp5/WwoUL9corr3R2ugBwyYnt7BMKCgpUUFDwg2PsdrucTucp13366adat26dPvjgA1177bWSpD/84Q+65ZZb9Mwzzyg9PV0rVqzQiRMn9OqrryouLk5DhgxRdXW1nn322aAfAACAjjod9lBs2rRJqamp6tmzp8aNG6fHH39cvXr1kiS5XC4lJycHoi5Jubm5io6O1tatW3XbbbfJ5XLpxhtvVFxcXGBMfn6+nnrqKX3zzTfq2bNnh9f0er3yer2Bxx6PR5Lk8/nk8/kisZuAJMnv9we+c6whkkI9vsIe9gkTJmjKlCkaMGCA9uzZo9/85jcqKCiQy+VSTEyM3G63UlNTgycRG6uUlBS53W5Jktvt1oABA4LGpKWlBdadKuylpaVatGhRh+VlZWVKSEgI1+4BHexvkaRYVVZW6qudXT0bmKy1tTWkcWEP+9SpUwN/Hjp0qK655hpdeeWV2rRpk8aPHx/ulwtYsGCBSkpKAo89Ho8yMjKUl5cnh8MRsdcFdtQ1SjXblZ2drWH9Urp6OjBY+5WIM4nIpZjvuuKKK9S7d2/t3r1b48ePl9PpVENDQ9AYv9+vxsbGwHV5p9Op+vr6oDHtj0937d5ut8tut3dYbrPZZLPZwrErwCnFxsYGvnOsIZJCPb4ifh/7l19+qcOHD6tv376SpJycHDU1NamqqiowZsOGDWpra9Po0aMDYyoqKoKuJ5WXl2vgwIGnvAwDAPivToe9paVF1dXVqq6uliTt3btX1dXVqqurU0tLix588EFVVlZq3759Wr9+vW699VZdddVVys/PlyQNGjRIEyZM0Jw5c7Rt2zZt3rxZxcXFmjp1qtLT0yVJ06dPV1xcnAoLC1VbW6tVq1bphRdeCLrUAgA4DauTNm7caEnq8DVz5kyrtbXVysvLs/r06WPZbDYrMzPTmjNnjuV2u4O2cfjwYWvatGlWYmKi5XA4rFmzZllHjhwJGrNjxw5rzJgxlt1uty677DLrySef7NQ8m5ubLUlWc3NzZ3cR6JSP9h2yMuevsT7ad6irpwLDhdq1KMuyrC78uRIxHo9HSUlJam5u5s1TRFT1F4c1+aVKvT03W8Mze3X1dGCwULvGZ8UAgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGEIOwAYhrADgGE6HfaKigpNmjRJ6enpioqK0ttvvx203rIsPfLII+rbt6/i4+OVm5urzz//PGhMY2OjZsyYIYfDoeTkZBUWFqqlpSVozMcff6wbbrhB3bp1U0ZGhhYvXtz5vQOAS1Cnw3706FENGzZMS5YsOeX6xYsX6/e//71efvllbd26Vd27d1d+fr6OHz8eGDNjxgzV1taqvLxca9asUUVFhe67777Aeo/Ho7y8PGVmZqqqqkpPP/20Fi5cqFdeeeUsdhEALjHWOZBkvfXWW4HHbW1tltPptJ5++unAsqamJstut1uvvfaaZVmW9cknn1iSrA8++CAw5p///KcVFRVlffXVV5ZlWdbSpUutnj17Wl6vNzBm/vz51sCBA0OeW3NzsyXJam5uPtvdA0Ly0b5DVub8NdZH+w519VRguFC7FhvOHxJ79+6V2+1Wbm5uYFlSUpJGjx4tl8ulqVOnyuVyKTk5Wddee21gTG5urqKjo7V161bddtttcrlcuvHGGxUXFxcYk5+fr6eeekrffPONevbs2eG1vV6vvF5v4LHH45Ek+Xw++Xy+cO4mEMTv9we+c6whkkI9vsIadrfbLUlKS0sLWp6WlhZY53a7lZqaGjyJ2FilpKQEjRkwYECHbbSvO1XYS0tLtWjRog7Ly8rKlJCQcJZ7BJzZ/hZJilVlZaW+2tnVs4HJWltbQxoX1rB3pQULFqikpCTw2OPxKCMjQ3l5eXI4HF04M5huR12jVLNd2dnZGtYvpaunA4O1X4k4k7CG3el0SpLq6+vVt2/fwPL6+noNHz48MKahoSHoeX6/X42NjYHnO51O1dfXB41pf9w+5vvsdrvsdnuH5TabTTab7ex2CAhBbGxs4DvHGiIp1OMrrPexDxgwQE6nU+vXrw8s83g82rp1q3JyciRJOTk5ampqUlVVVWDMhg0b1NbWptGjRwfGVFRUBF1PKi8v18CBA095GQYA8F+dDntLS4uqq6tVXV0t6ds3TKurq1VXV6eoqCjNmzdPjz/+uP7+97+rpqZGd999t9LT0zV58mRJ0qBBgzRhwgTNmTNH27Zt0+bNm1VcXKypU6cqPT1dkjR9+nTFxcWpsLBQtbW1WrVqlV544YWgSy0AgNPo7O02GzdutCR1+Jo5c6ZlWd/e8vjb3/7WSktLs+x2uzV+/Hhr165dQds4fPiwNW3aNCsxMdFyOBzWrFmzrCNHjgSN2bFjhzVmzBjLbrdbl112mfXkk092ap7c7ojzhdsdcb6E2rUoy7KsLvy5EjEej0dJSUlqbm7mzVNEVPUXhzX5pUq9PTdbwzN7dfV0YLBQu8ZnxQCAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABgmrL/MGriQ7T10VEe9/rBvd8/XRwPf23+xdTh1t8dqQO/uYd8uzEXYcUnYe+ioxj6zKaKv8cu/1kRs2xt/dRNxR8gIOy4J7Wfqz985XFelJoZ328e8WrPJpZ/clKPu8fawbnt3Q4vmraqOyP9pwFyEHZeUq1ITdfVlSWHdps/nk7uPNDKzp2w2W1i3DZwN3jwFAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwDGEHAMMQdgAwTGxXTwA4X6JiPdrr2aXobolh3a7f79cB/wF92vipYmPD+1dqr6dFUbGesG4T5iPsuGTYkrfqN9ueiNj2l65bGpHt2pLHS7olItuGmQg7Lhm+ptH6vxOn68rU8J+xb35/s64fc33Yz9j3NLTof1bsCes2YT7CjkuG5XdogGOgBvdKCut2fT6f9sbu1aCUQbLZbGHddtvxZln+r8O6TZiPN08BwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDBhD/vChQsVFRUV9JWVlRVYf/z4cRUVFalXr15KTEzU7bffrvr6+qBt1NXVaeLEiUpISFBqaqoefPBB+f3+cE8VAIwUkY/tHTJkiN59993/vsh3PqP6gQce0Nq1a7V69WolJSWpuLhYU6ZM0ebNmyVJJ0+e1MSJE+V0OrVlyxYdPHhQd999t2w2m554InK/JAEATBGRsMfGxsrpdHZY3tzcrD//+c9auXKlxo0bJ0latmyZBg0apMrKSmVnZ6usrEyffPKJ3n33XaWlpWn48OF67LHHNH/+fC1cuFBxcXGRmDIAGCMiYf/888+Vnp6ubt26KScnR6WlperXr5+qqqrk8/mUm5sbGJuVlaV+/frJ5XIpOztbLpdLQ4cOVVpaWmBMfn6+5s6dq9raWo0YMeKUr+n1euX1egOPPZ5vf0+kz+eTz+eLxG7iItJ+Kc/v94f9eGjfXiSOs0jOGxefUI+BsId99OjRWr58uQYOHKiDBw9q0aJFuuGGG7Rz50653W7FxcUpOTk56DlpaWlyu92SJLfbHRT19vXt606ntLRUixYt6rC8rKxMCQkJ57hXuNjtb5GkWL3//vv6Iry/GS+gvLw87Ns8H/PGxaO1tTWkcWEPe0FBQeDP11xzjUaPHq3MzEy98cYbio+PD/fLBSxYsEAlJSWBxx6PRxkZGcrLy5PD4YjY6+LiUHvAo2dqKjVmzBgNSQ/v8eDz+VReXq6bb7457L8aL5LzxsWn/UrEmUT8d54mJyfrRz/6kXbv3q2bb75ZJ06cUFNTU9BZe319feCavNPp1LZt24K20X7XzKmu27ez2+2y2+0dlttstrD/ZcPFp/0N/NjY2IgdD5E41s7HvHHxCPUYiPh97C0tLdqzZ4/69u2rUaNGyWazaf369YH1u3btUl1dnXJyciRJOTk5qqmpUUNDQ2BMeXm5HA6HBg8eHOnpAsBFL+xn7L/61a80adIkZWZm6sCBA3r00UcVExOjadOmKSkpSYWFhSopKVFKSoocDofuv/9+5eTkKDs7W5KUl5enwYMH66677tLixYvldrv18MMPq6io6JRn5ACAYGEP+5dffqlp06bp8OHD6tOnj8aMGaPKykr16dNHkvTcc88pOjpat99+u7xer/Lz87V06dLA82NiYrRmzRrNnTtXOTk56t69u2bOnKnf/e534Z4qABgp7GF//fXXf3B9t27dtGTJEi1ZsuS0YzIzM/XOO++Ee2oAcEngs2IAwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMQ9gBwDCEHQAMc0GHfcmSJerfv7+6deum0aNHa9u2bV09JQC44F2wYV+1apVKSkr06KOP6sMPP9SwYcOUn5+vhoaGrp4aAFzQYrt6Aqfz7LPPas6cOZo1a5Yk6eWXX9batWv16quv6te//nWH8V6vV16vN/DY4/FIknw+n3w+3/mZNC5YR459e2zsqGuU3+//wbHHjrVq357PQ972Sf9J1dTs0RFtUkxsTEjP6X/l/1F8fMIZx+3++qgkye/3cxwj5GPgggz7iRMnVFVVpQULFgSWRUdHKzc3Vy6X65TPKS0t1aJFizosLysrU0LCmf8CwWyu+ihJMfrfv31yxrFe9265/zIvovNxznxedudVIY//wPW+voiP4IRwUWhtbQ1p3AUZ9kOHDunkyZNKS0sLWp6WlqbPPvvslM9ZsGCBSkpKAo89Ho8yMjKUl5cnh8MR0fniwpd99ISGftqgK/p0V7zth8+qjx27RvvuGBrytr89Y6/R0KFDw37GLknd7THq36t7yPOBudqvRJzJBRn2s2G322W32zsst9lsstlsXTAjXEjSkm2akTMgxNG9lJOVEfK2fT6feqhVt9xyE8caIirU4+uCfPO0d+/eiomJUX19fdDy+vp6OZ3OLpoVAFwcLsiwx8XFadSoUVq/fn1gWVtbm9avX6+cnJwunBkAXPgu2EsxJSUlmjlzpq699lr9+Mc/1vPPP6+jR48G7pIBAJzaBRv2O++8U19//bUeeeQRud1uDR8+XOvWrevwhioAINgFG3ZJKi4uVnFxcVdPAwAuKhfkNXYAwNkj7ABgGMIOAIYh7ABgGMIOAIYh7ABgmAv6dsdzYVmWpNA/NAc4Wz6fT62trfJ4PHxWDCKqvWftfTsdY8N+5MgRSVJGRugf5gQAF4MjR44oKSnptOujrDOl/yLV1tamAwcOqEePHoqKiurq6cBg7R8RvX//fj4iGhFlWZaOHDmi9PR0RUef/kq6sWEHzhePx6OkpCQ1NzcTdlwQePMUAAxD2AHAMIQdOEd2u12PPvroKX+DF9AVuMYOAIbhjB0ADEPYAcAwhB0ADEPYAcAwhB0ADEPYgf/vnnvu0eTJk7t6GsA5I+wAYBjCDoRg586dKigoUGJiotLS0nTXXXfp0KFDkqRXXnlF6enpamtrC3rOrbfeqtmzZ2vfvn2Kjo7W9u3bg9Y///zzyszM7PA84FwRduAMmpqaNG7cOI0YMULbt2/XunXrVF9fr5/+9KeSpDvuuEOHDx/Wxo0bA89pbGzUunXrNGPGDPXv31+5ublatmxZ0HaXLVume+655wc/pQ84GxxRwBm8+OKLGjFihJ544gllZWVpxIgRevXVV7Vx40b95z//Uc+ePVVQUKCVK1cGnvPXv/5VvXv31tixYyVJ9957r1577TV5vV5J0ocffqiamhrNmjWrS/YJZiPswBns2LFDGzduVGJiYuArKytLkrRnzx5J0owZM/Tmm28Gwr1ixQpNnTo1cDY+efJkxcTE6K233pIkLV++XGPHjlX//v3P/w7BeMb+BiUgXFpaWjRp0iQ99dRTHdb17dtXkjRp0iRZlqW1a9fquuuu07///W8999xzgXFxcXG6++67tWzZMk2ZMkUrV67UCy+8cN72AZcWwg6cwciRI/Xmm2+qf//+io099V+Zbt26acqUKVqxYoV2796tgQMHauTIkUFj7r33Xl199dVaunSp/H6/pkyZcj6mj0sQYQe+o7m5WdXV1UHL7rvvPv3xj3/UtGnT9NBDDyklJUW7d+/W66+/rj/96U+KiYmR9O3lmJ/85Ceqra3Vz372sw7bHjRokLKzszV//nzNnj1b8fHx52OXcAki7MB3bNq0SSNGjAhaVlhYqM2bN2v+/PnKy8uT1+tVZmamJkyYEHRHy7hx45SSkqJdu3Zp+vTpp9x+YWGhtmzZotmzZ0d0P3Bp4/PYgfPoscce0+rVq/Xxxx939VRgMO6KAc6DlpYW7dy5Uy+++KLuv//+rp4ODEfYgfOguLhYo0aN0k033cRlGEQcl2IAwDCcsQOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABiGsAOAYQg7ABjm/wFdzl5gsVFapQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "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": 1079, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Размеры выборок:\n", "Обучающая выборка: 10077 записей\n", "Тестовая выборка: 2520 записей\n" ] } ], "source": [ "train_df, test_df = train_test_split(df, test_size=0.2, random_state=42)\n", "\n", "print(\"Размеры выборок:\")\n", "print(f\"Обучающая выборка: {train_df.shape[0]} записей\")\n", "print(f\"Тестовая выборка: {test_df.shape[0]} записей\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Дискретизация числовых признаков" ] }, { "cell_type": "code", "execution_count": 1080, "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": 1080, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.dtypes" ] }, { "cell_type": "code", "execution_count": 1081, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PriceLevyManufacturerModelCategoryLeather interiorFuel typeEngine volumeMileageCylindersGear box typeDrive wheelsDoorsWheelColorAirbagsAgeAge_bin
148296743966DAEWOOLacettiSedanYesDiesel2.0622274AutomaticFrontЧетырехдверныйLeft wheelWhite411Старый
363220005583HYUNDAIElantraSedanYesPetrol1.6944794AutomaticFrontЧетырехдверныйLeft wheelRed49Средний
498213172836DODGECaliberHatchbackNoPetrol2.01140004VariatorFrontЧетырехдверныйLeft wheelSilver810Средний
167588781584HYUNDAIElantraSedanYesPetrol1.8600004TiptronicFrontЧетырехдверныйLeft wheelGrey106Средний
6875250860TOYOTAPriusHatchbackNoHybrid1.804AutomaticFrontЧетырехдверныйLeft wheelSilver125Новый
.........................................................
18201103490AUDIA4SedanYesPetrol2.41500006Manual4x4ЧетырехдверныйLeft wheelGrey413Старый
74362038765KIAAvellaSedanYesPetrol2.01256214AutomaticFrontЧетырехдверныйLeft wheelSilver125Новый
772813485843TOYOTAPriusHatchbackNoHybrid1.52120004VariatorFrontЧетырехдверныйLeft wheelSilver812Старый
1136156770FORDFiestaSedanNoPetrol1.6748004AutomaticFrontЧетырехдверныйLeft wheelSilver84Новый
1064016308751KIAOptima EXSedanYesPetrol2.49200012TiptronicFrontЧетырехдверныйLeft wheelSilver87Средний
\n", "

10077 rows × 18 columns

\n", "
" ], "text/plain": [ " Price Levy Manufacturer Model Category Leather interior \\\n", "14829 6743 966 DAEWOO Lacetti Sedan Yes \n", "3632 20005 583 HYUNDAI Elantra Sedan Yes \n", "4982 13172 836 DODGE Caliber Hatchback No \n", "16758 8781 584 HYUNDAI Elantra Sedan Yes \n", "6875 25086 0 TOYOTA Prius Hatchback No \n", "... ... ... ... ... ... ... \n", "18201 10349 0 AUDI A4 Sedan Yes \n", "7436 2038 765 KIA Avella Sedan Yes \n", "7728 13485 843 TOYOTA Prius Hatchback No \n", "1136 15677 0 FORD Fiesta Sedan No \n", "10640 16308 751 KIA Optima EX Sedan Yes \n", "\n", " Fuel type Engine volume Mileage Cylinders Gear box type Drive wheels \\\n", "14829 Diesel 2.0 62227 4 Automatic Front \n", "3632 Petrol 1.6 94479 4 Automatic Front \n", "4982 Petrol 2.0 114000 4 Variator Front \n", "16758 Petrol 1.8 60000 4 Tiptronic Front \n", "6875 Hybrid 1.8 0 4 Automatic Front \n", "... ... ... ... ... ... ... \n", "18201 Petrol 2.4 150000 6 Manual 4x4 \n", "7436 Petrol 2.0 125621 4 Automatic Front \n", "7728 Hybrid 1.5 212000 4 Variator Front \n", "1136 Petrol 1.6 74800 4 Automatic Front \n", "10640 Petrol 2.4 92000 12 Tiptronic Front \n", "\n", " Doors Wheel Color Airbags Age Age_bin \n", "14829 Четырехдверный Left wheel White 4 11 Старый \n", "3632 Четырехдверный Left wheel Red 4 9 Средний \n", "4982 Четырехдверный Left wheel Silver 8 10 Средний \n", "16758 Четырехдверный Left wheel Grey 10 6 Средний \n", "6875 Четырехдверный Left wheel Silver 12 5 Новый \n", "... ... ... ... ... ... ... \n", "18201 Четырехдверный Left wheel Grey 4 13 Старый \n", "7436 Четырехдверный Left wheel Silver 12 5 Новый \n", "7728 Четырехдверный Left wheel Silver 8 12 Старый \n", "1136 Четырехдверный Left wheel Silver 8 4 Новый \n", "10640 Четырехдверный Left wheel Silver 8 7 Средний \n", "\n", "[10077 rows x 18 columns]" ] }, "execution_count": 1081, "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": 1082, "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": 1082, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.dtypes" ] }, { "cell_type": "code", "execution_count": 1083, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \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", " \n", "
PriceLevyManufacturerModelEngine volumeMileageCylindersColorAirbagsAge...Drive wheels_RearDoors_ДвухдверныйDoors_МногодверныйDoors_ЧетырехдверныйWheel_Left wheelWheel_Right-hand driveAge_bin_НовыйAge_bin_СреднийAge_bin_СтарыйAge_bin_Очень старый
148296743966DAEWOOLacetti2.0622274White411...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
363220005583HYUNDAIElantra1.6944794Red49...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
498213172836DODGECaliber2.01140004Silver810...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
167588781584HYUNDAIElantra1.8600004Grey106...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
6875250860TOYOTAPrius1.804Silver125...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
..................................................................
18201103490AUDIA42.41500006Grey413...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
74362038765KIAAvella2.01256214Silver125...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
772813485843TOYOTAPrius1.52120004Silver812...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
1136156770FORDFiesta1.6748004Silver84...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
1064016308751KIAOptima EX2.49200012Silver87...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
\n", "

10077 rows × 46 columns

\n", "
" ], "text/plain": [ " Price Levy Manufacturer Model Engine volume Mileage Cylinders \\\n", "14829 6743 966 DAEWOO Lacetti 2.0 62227 4 \n", "3632 20005 583 HYUNDAI Elantra 1.6 94479 4 \n", "4982 13172 836 DODGE Caliber 2.0 114000 4 \n", "16758 8781 584 HYUNDAI Elantra 1.8 60000 4 \n", "6875 25086 0 TOYOTA Prius 1.8 0 4 \n", "... ... ... ... ... ... ... ... \n", "18201 10349 0 AUDI A4 2.4 150000 6 \n", "7436 2038 765 KIA Avella 2.0 125621 4 \n", "7728 13485 843 TOYOTA Prius 1.5 212000 4 \n", "1136 15677 0 FORD Fiesta 1.6 74800 4 \n", "10640 16308 751 KIA Optima EX 2.4 92000 12 \n", "\n", " Color Airbags Age ... Drive wheels_Rear Doors_Двухдверный \\\n", "14829 White 4 11 ... False False \n", "3632 Red 4 9 ... False False \n", "4982 Silver 8 10 ... False False \n", "16758 Grey 10 6 ... False False \n", "6875 Silver 12 5 ... False False \n", "... ... ... ... ... ... ... \n", "18201 Grey 4 13 ... False False \n", "7436 Silver 12 5 ... False False \n", "7728 Silver 8 12 ... False False \n", "1136 Silver 8 4 ... False False \n", "10640 Silver 8 7 ... False False \n", "\n", " Doors_Многодверный Doors_Четырехдверный Wheel_Left wheel \\\n", "14829 False True True \n", "3632 False True True \n", "4982 False True True \n", "16758 False True True \n", "6875 False True True \n", "... ... ... ... \n", "18201 False True True \n", "7436 False True True \n", "7728 False True True \n", "1136 False True True \n", "10640 False True True \n", "\n", " Wheel_Right-hand drive Age_bin_Новый Age_bin_Средний Age_bin_Старый \\\n", "14829 False False False True \n", "3632 False False True False \n", "4982 False False True False \n", "16758 False False True False \n", "6875 False True False False \n", "... ... ... ... ... \n", "18201 False False False True \n", "7436 False True False False \n", "7728 False False False True \n", "1136 False True False False \n", "10640 False False True False \n", "\n", " Age_bin_Очень старый \n", "14829 False \n", "3632 False \n", "4982 False \n", "16758 False \n", "6875 False \n", "... ... \n", "18201 False \n", "7436 False \n", "7728 False \n", "1136 False \n", "10640 False \n", "\n", "[10077 rows x 46 columns]" ] }, "execution_count": 1083, "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": 1084, "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": 1084, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.dtypes" ] }, { "cell_type": "code", "execution_count": 1085, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \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", " \n", "
PriceLevyManufacturerModelEngine volumeMileageCylindersColorAirbagsAge...Drive wheels_RearDoors_ДвухдверныйDoors_МногодверныйDoors_ЧетырехдверныйWheel_Left wheelWheel_Right-hand driveAge_bin_НовыйAge_bin_СреднийAge_bin_СтарыйAge_bin_Очень старый
14829-0.9364280.909873DAEWOOLacetti-0.212078-0.855905-0.399820White-0.6814910.446831...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
36320.2881470.076376HYUNDAIElantra-0.757467-0.422001-0.399820Red-0.6814910.013523...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
4982-0.3427930.626963DODGECaliber-0.212078-0.159374-0.399820Silver0.3307630.230177...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
16758-0.7482450.078552HYUNDAIElantra-0.484772-0.885866-0.399820Grey0.836890-0.636438...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
68750.757313-1.192368TOYOTAPrius-0.484772-1.693079-0.399820Silver1.343017-0.853091...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
..................................................................
18201-0.603461-1.192368AUDIA40.3333120.3249541.520116Grey-0.6814910.880138...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
7436-1.3708750.472450KIAAvella-0.212078-0.003030-0.399820Silver1.343017-0.853091...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
7728-0.3138910.642196TOYOTAPrius-0.8938141.159074-0.399820Silver0.3307630.663484...FalseFalseFalseTrueTrueFalseFalseFalseTrueFalse
1136-0.111488-1.192368FORDFiesta-0.757467-0.686753-0.399820Silver0.330763-1.069745...FalseFalseFalseTrueTrueFalseTrueFalseFalseFalse
10640-0.0532230.441983KIAOptima EX0.333312-0.4553527.279922Silver0.330763-0.419784...FalseFalseFalseTrueTrueFalseFalseTrueFalseFalse
\n", "

10077 rows × 46 columns

\n", "
" ], "text/plain": [ " Price Levy Manufacturer Model Engine volume Mileage \\\n", "14829 -0.936428 0.909873 DAEWOO Lacetti -0.212078 -0.855905 \n", "3632 0.288147 0.076376 HYUNDAI Elantra -0.757467 -0.422001 \n", "4982 -0.342793 0.626963 DODGE Caliber -0.212078 -0.159374 \n", "16758 -0.748245 0.078552 HYUNDAI Elantra -0.484772 -0.885866 \n", "6875 0.757313 -1.192368 TOYOTA Prius -0.484772 -1.693079 \n", "... ... ... ... ... ... ... \n", "18201 -0.603461 -1.192368 AUDI A4 0.333312 0.324954 \n", "7436 -1.370875 0.472450 KIA Avella -0.212078 -0.003030 \n", "7728 -0.313891 0.642196 TOYOTA Prius -0.893814 1.159074 \n", "1136 -0.111488 -1.192368 FORD Fiesta -0.757467 -0.686753 \n", "10640 -0.053223 0.441983 KIA Optima EX 0.333312 -0.455352 \n", "\n", " Cylinders Color Airbags Age ... Drive wheels_Rear \\\n", "14829 -0.399820 White -0.681491 0.446831 ... False \n", "3632 -0.399820 Red -0.681491 0.013523 ... False \n", "4982 -0.399820 Silver 0.330763 0.230177 ... False \n", "16758 -0.399820 Grey 0.836890 -0.636438 ... False \n", "6875 -0.399820 Silver 1.343017 -0.853091 ... False \n", "... ... ... ... ... ... ... \n", "18201 1.520116 Grey -0.681491 0.880138 ... False \n", "7436 -0.399820 Silver 1.343017 -0.853091 ... False \n", "7728 -0.399820 Silver 0.330763 0.663484 ... False \n", "1136 -0.399820 Silver 0.330763 -1.069745 ... False \n", "10640 7.279922 Silver 0.330763 -0.419784 ... False \n", "\n", " Doors_Двухдверный Doors_Многодверный Doors_Четырехдверный \\\n", "14829 False False True \n", "3632 False False True \n", "4982 False False True \n", "16758 False False True \n", "6875 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", "14829 True False False \n", "3632 True False False \n", "4982 True False False \n", "16758 True False False \n", "6875 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", "14829 False True False \n", "3632 True False False \n", "4982 True False False \n", "16758 True False False \n", "6875 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", "[10077 rows x 46 columns]" ] }, "execution_count": 1085, "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": 1086, "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": 1087, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\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", " ]" ] }, "execution_count": 1087, "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.8" } }, "nbformat": 4, "nbformat_minor": 2 }