{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#### Загрузка набора данных" ] }, { "cell_type": "code", "execution_count": 2, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datepricebedroomsbathroomssqft_livingsqft_lotfloorswaterfrontviewconditiongradesqft_abovesqft_basementyr_builtyr_renovatedzipcodelatlongsqft_living15sqft_lot15
id
712930052020141013T000000221900.031.00118056501.0003711800195509817847.5112-122.25713405650
641410019220141209T000000538000.032.25257072422.000372170400195119919812547.7210-122.31916907639
563150040020150225T000000180000.021.00770100001.000367700193309802847.7379-122.23327208062
248720087520141209T000000604000.043.00196050001.000571050910196509813647.5208-122.39313605000
195440051020150218T000000510000.032.00168080801.0003816800198709807447.6168-122.04518007503
...............................................................
26300001820140521T000000360000.032.50153011313.0003815300200909810347.6993-122.34615301509
660006012020150223T000000400000.042.50231058132.0003823100201409814647.5107-122.36218307200
152330014120140623T000000402101.020.75102013502.0003710200200909814447.5944-122.29910202007
29131010020150116T000000400000.032.50160023882.0003816000200409802747.5345-122.06914101287
152330015720141015T000000325000.020.75102010762.0003710200200809814447.5941-122.29910201357
\n", "

21613 rows × 20 columns

\n", "
" ], "text/plain": [ " date price bedrooms bathrooms sqft_living \\\n", "id \n", "7129300520 20141013T000000 221900.0 3 1.00 1180 \n", "6414100192 20141209T000000 538000.0 3 2.25 2570 \n", "5631500400 20150225T000000 180000.0 2 1.00 770 \n", "2487200875 20141209T000000 604000.0 4 3.00 1960 \n", "1954400510 20150218T000000 510000.0 3 2.00 1680 \n", "... ... ... ... ... ... \n", "263000018 20140521T000000 360000.0 3 2.50 1530 \n", "6600060120 20150223T000000 400000.0 4 2.50 2310 \n", "1523300141 20140623T000000 402101.0 2 0.75 1020 \n", "291310100 20150116T000000 400000.0 3 2.50 1600 \n", "1523300157 20141015T000000 325000.0 2 0.75 1020 \n", "\n", " sqft_lot floors waterfront view condition grade sqft_above \\\n", "id \n", "7129300520 5650 1.0 0 0 3 7 1180 \n", "6414100192 7242 2.0 0 0 3 7 2170 \n", "5631500400 10000 1.0 0 0 3 6 770 \n", "2487200875 5000 1.0 0 0 5 7 1050 \n", "1954400510 8080 1.0 0 0 3 8 1680 \n", "... ... ... ... ... ... ... ... \n", "263000018 1131 3.0 0 0 3 8 1530 \n", "6600060120 5813 2.0 0 0 3 8 2310 \n", "1523300141 1350 2.0 0 0 3 7 1020 \n", "291310100 2388 2.0 0 0 3 8 1600 \n", "1523300157 1076 2.0 0 0 3 7 1020 \n", "\n", " sqft_basement yr_built yr_renovated zipcode lat long \\\n", "id \n", "7129300520 0 1955 0 98178 47.5112 -122.257 \n", "6414100192 400 1951 1991 98125 47.7210 -122.319 \n", "5631500400 0 1933 0 98028 47.7379 -122.233 \n", "2487200875 910 1965 0 98136 47.5208 -122.393 \n", "1954400510 0 1987 0 98074 47.6168 -122.045 \n", "... ... ... ... ... ... ... \n", "263000018 0 2009 0 98103 47.6993 -122.346 \n", "6600060120 0 2014 0 98146 47.5107 -122.362 \n", "1523300141 0 2009 0 98144 47.5944 -122.299 \n", "291310100 0 2004 0 98027 47.5345 -122.069 \n", "1523300157 0 2008 0 98144 47.5941 -122.299 \n", "\n", " sqft_living15 sqft_lot15 \n", "id \n", "7129300520 1340 5650 \n", "6414100192 1690 7639 \n", "5631500400 2720 8062 \n", "2487200875 1360 5000 \n", "1954400510 1800 7503 \n", "... ... ... \n", "263000018 1530 1509 \n", "6600060120 1830 7200 \n", "1523300141 1020 2007 \n", "291310100 1410 1287 \n", "1523300157 1020 1357 \n", "\n", "[21613 rows x 20 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "from sklearn import set_config\n", "\n", "set_config(transform_output=\"pandas\")\n", "\n", "random_state=9\n", "\n", "df = pd.read_csv(\"data/kc_house_data.csv\", index_col=\"id\")\n", "\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n", "\n", "Целевой признак -- waterfront" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'X_train'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datepricebedroomsbathroomssqft_livingsqft_lotfloorswaterfrontviewconditiongradesqft_abovesqft_basementyr_builtyr_renovatedzipcodelatlongsqft_living15sqft_lot15
id
304620012520150406T000000202000.021.0074065501.000457400194609816847.4807-122.33210808515
185300003020150416T000000775000.032.503550328072.0003935500198909807747.7292-122.082327035001
182507900520140609T000000739000.042.5028002461142.0003928000199909801447.6586-121.962275060351
252303931520141022T000000481000.032.002580156531.5003925800199009816647.4561-122.36119209840
662340024620140523T000000200000.041.001350115071.0003713500196609805547.4269-122.197132025675
...............................................................
252306913420150406T000000495000.042.502480919111.0024714701010197309802747.4579-121.981254091911
193130041220150416T000000475000.032.25119012003.0003811900200809810347.6542-122.34611801224
433100040020150220T000000252000.031.501150132001.0003711500195609816647.4752-122.345122013066
921290018020140625T000000760000.042.50276060002.000572230530194209811547.6877-122.29516006000
700010077520140721T000000625000.032.001730122191.0004717300198609800447.5825-122.189247013594
\n", "

17290 rows × 20 columns

\n", "
" ], "text/plain": [ " date price bedrooms bathrooms sqft_living \\\n", "id \n", "3046200125 20150406T000000 202000.0 2 1.00 740 \n", "1853000030 20150416T000000 775000.0 3 2.50 3550 \n", "1825079005 20140609T000000 739000.0 4 2.50 2800 \n", "2523039315 20141022T000000 481000.0 3 2.00 2580 \n", "6623400246 20140523T000000 200000.0 4 1.00 1350 \n", "... ... ... ... ... ... \n", "2523069134 20150406T000000 495000.0 4 2.50 2480 \n", "1931300412 20150416T000000 475000.0 3 2.25 1190 \n", "4331000400 20150220T000000 252000.0 3 1.50 1150 \n", "9212900180 20140625T000000 760000.0 4 2.50 2760 \n", "7000100775 20140721T000000 625000.0 3 2.00 1730 \n", "\n", " sqft_lot floors waterfront view condition grade sqft_above \\\n", "id \n", "3046200125 6550 1.0 0 0 4 5 740 \n", "1853000030 32807 2.0 0 0 3 9 3550 \n", "1825079005 246114 2.0 0 0 3 9 2800 \n", "2523039315 15653 1.5 0 0 3 9 2580 \n", "6623400246 11507 1.0 0 0 3 7 1350 \n", "... ... ... ... ... ... ... ... \n", "2523069134 91911 1.0 0 2 4 7 1470 \n", "1931300412 1200 3.0 0 0 3 8 1190 \n", "4331000400 13200 1.0 0 0 3 7 1150 \n", "9212900180 6000 2.0 0 0 5 7 2230 \n", "7000100775 12219 1.0 0 0 4 7 1730 \n", "\n", " sqft_basement yr_built yr_renovated zipcode lat long \\\n", "id \n", "3046200125 0 1946 0 98168 47.4807 -122.332 \n", "1853000030 0 1989 0 98077 47.7292 -122.082 \n", "1825079005 0 1999 0 98014 47.6586 -121.962 \n", "2523039315 0 1990 0 98166 47.4561 -122.361 \n", "6623400246 0 1966 0 98055 47.4269 -122.197 \n", "... ... ... ... ... ... ... \n", "2523069134 1010 1973 0 98027 47.4579 -121.981 \n", "1931300412 0 2008 0 98103 47.6542 -122.346 \n", "4331000400 0 1956 0 98166 47.4752 -122.345 \n", "9212900180 530 1942 0 98115 47.6877 -122.295 \n", "7000100775 0 1986 0 98004 47.5825 -122.189 \n", "\n", " sqft_living15 sqft_lot15 \n", "id \n", "3046200125 1080 8515 \n", "1853000030 3270 35001 \n", "1825079005 2750 60351 \n", "2523039315 1920 9840 \n", "6623400246 1320 25675 \n", "... ... ... \n", "2523069134 2540 91911 \n", "1931300412 1180 1224 \n", "4331000400 1220 13066 \n", "9212900180 1600 6000 \n", "7000100775 2470 13594 \n", "\n", "[17290 rows x 20 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'y_train'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
waterfront
id
30462001250
18530000300
18250790050
25230393150
66234002460
......
25230691340
19313004120
43310004000
92129001800
70001007750
\n", "

17290 rows × 1 columns

\n", "
" ], "text/plain": [ " waterfront\n", "id \n", "3046200125 0\n", "1853000030 0\n", "1825079005 0\n", "2523039315 0\n", "6623400246 0\n", "... ...\n", "2523069134 0\n", "1931300412 0\n", "4331000400 0\n", "9212900180 0\n", "7000100775 0\n", "\n", "[17290 rows x 1 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'X_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datepricebedroomsbathroomssqft_livingsqft_lotfloorswaterfrontviewconditiongradesqft_abovesqft_basementyr_builtyr_renovatedzipcodelatlongsqft_living15sqft_lot15
id
177595010020150113T000000357823.031.50124091961.0003812400196809807247.7562-122.094169010800
355080004020141114T000000223000.031.0094079801.000369400196109814647.5107-122.34510507980
145460025620141013T000000710000.052.50257096001.002381620950195609812547.7216-122.28226809900
146740009520150224T000000545000.041.752040535781.000571160880195909803847.3844-122.000204053578
62406900320150102T000000829000.042.752970596771.0024816101360197309807547.5953-122.080293042489
...............................................................
350010018920140630T000000300000.021.0096081531.000369600194709815547.7341-122.30011608199
95200149520150306T000000588000.041.75217057501.002371370800197509811647.5668-122.38314505750
607230080020150505T000000595000.041.75251089891.000481680830196409800647.5569-122.17225108931
294401024020140908T000000988000.043.004040197002.00031140400198709805247.7205-122.127393021887
789380267020150424T000000279900.033.25224050002.000391540700198909819847.4114-122.33418007500
\n", "

4323 rows × 20 columns

\n", "
" ], "text/plain": [ " date price bedrooms bathrooms sqft_living \\\n", "id \n", "1775950100 20150113T000000 357823.0 3 1.50 1240 \n", "3550800040 20141114T000000 223000.0 3 1.00 940 \n", "1454600256 20141013T000000 710000.0 5 2.50 2570 \n", "1467400095 20150224T000000 545000.0 4 1.75 2040 \n", "624069003 20150102T000000 829000.0 4 2.75 2970 \n", "... ... ... ... ... ... \n", "3500100189 20140630T000000 300000.0 2 1.00 960 \n", "952001495 20150306T000000 588000.0 4 1.75 2170 \n", "6072300800 20150505T000000 595000.0 4 1.75 2510 \n", "2944010240 20140908T000000 988000.0 4 3.00 4040 \n", "7893802670 20150424T000000 279900.0 3 3.25 2240 \n", "\n", " sqft_lot floors waterfront view condition grade sqft_above \\\n", "id \n", "1775950100 9196 1.0 0 0 3 8 1240 \n", "3550800040 7980 1.0 0 0 3 6 940 \n", "1454600256 9600 1.0 0 2 3 8 1620 \n", "1467400095 53578 1.0 0 0 5 7 1160 \n", "624069003 59677 1.0 0 2 4 8 1610 \n", "... ... ... ... ... ... ... ... \n", "3500100189 8153 1.0 0 0 3 6 960 \n", "952001495 5750 1.0 0 2 3 7 1370 \n", "6072300800 8989 1.0 0 0 4 8 1680 \n", "2944010240 19700 2.0 0 0 3 11 4040 \n", "7893802670 5000 2.0 0 0 3 9 1540 \n", "\n", " sqft_basement yr_built yr_renovated zipcode lat long \\\n", "id \n", "1775950100 0 1968 0 98072 47.7562 -122.094 \n", "3550800040 0 1961 0 98146 47.5107 -122.345 \n", "1454600256 950 1956 0 98125 47.7216 -122.282 \n", "1467400095 880 1959 0 98038 47.3844 -122.000 \n", "624069003 1360 1973 0 98075 47.5953 -122.080 \n", "... ... ... ... ... ... ... \n", "3500100189 0 1947 0 98155 47.7341 -122.300 \n", "952001495 800 1975 0 98116 47.5668 -122.383 \n", "6072300800 830 1964 0 98006 47.5569 -122.172 \n", "2944010240 0 1987 0 98052 47.7205 -122.127 \n", "7893802670 700 1989 0 98198 47.4114 -122.334 \n", "\n", " sqft_living15 sqft_lot15 \n", "id \n", "1775950100 1690 10800 \n", "3550800040 1050 7980 \n", "1454600256 2680 9900 \n", "1467400095 2040 53578 \n", "624069003 2930 42489 \n", "... ... ... \n", "3500100189 1160 8199 \n", "952001495 1450 5750 \n", "6072300800 2510 8931 \n", "2944010240 3930 21887 \n", "7893802670 1800 7500 \n", "\n", "[4323 rows x 20 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'y_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
waterfront
id
17759501000
35508000400
14546002560
14674000950
6240690030
......
35001001890
9520014950
60723008000
29440102400
78938026700
\n", "

4323 rows × 1 columns

\n", "
" ], "text/plain": [ " waterfront\n", "id \n", "1775950100 0\n", "3550800040 0\n", "1454600256 0\n", "1467400095 0\n", "624069003 0\n", "... ...\n", "3500100189 0\n", "952001495 0\n", "6072300800 0\n", "2944010240 0\n", "7893802670 0\n", "\n", "[4323 rows x 1 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from utils import split_stratified_into_train_val_test\n", "\n", "X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n", " df,\n", " stratify_colname=\"waterfront\",\n", " frac_train=0.80,\n", " frac_val=0,\n", " frac_test=0.20,\n", " random_state=random_state,\n", ")\n", "\n", "display(\"X_train\", X_train)\n", "display(\"y_train\", y_train)\n", "\n", "display(\"X_test\", X_test)\n", "display(\"y_test\", y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Формирование конвейера для классификации данных\n", "\n", "preprocessing_num -- конвейер для обработки числовых данных: заполнение пропущенных значений и стандартизация\n", "\n", "preprocessing_cat -- конвейер для обработки категориальных данных: заполнение пропущенных данных и унитарное кодирование\n", "\n", "features_preprocessing -- трансформер для предобработки признаков\n", "\n", "features_engineering -- трансформер для конструирования признаков\n", "\n", "drop_columns -- трансформер для удаления колонок\n", "\n", "features_postprocessing -- трансформер для унитарного кодирования новых признаков\n", "\n", "pipeline_end -- основной конвейер предобработки данных и конструирования признаков\n", "\n", "Конвейер выполняется последовательно.\n", "\n", "Трансформер выполняет параллельно для указанного набора колонок.\n", "\n", "Документация: \n", "\n", "https://scikit-learn.org/1.5/api/sklearn.pipeline.html\n", "\n", "https://scikit-learn.org/1.5/modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "from sklearn.compose import ColumnTransformer\n", "from sklearn.discriminant_analysis import StandardScaler\n", "from sklearn.impute import SimpleImputer\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import OneHotEncoder\n", "\n", "from custom_transformers import HouseFeatures\n", "\n", "\n", "columns_to_drop = [\"waterfront\", \"yr_built\", \"zipcode\"]\n", "num_columns = [\n", " column\n", " for column in df.columns\n", " if column not in columns_to_drop and df[column].dtype != \"object\"\n", "]\n", "cat_columns = [\n", " column\n", " for column in df.columns\n", " if column not in columns_to_drop and df[column].dtype == \"object\"\n", "]\n", "\n", "num_imputer = SimpleImputer(strategy=\"median\")\n", "num_scaler = StandardScaler()\n", "preprocessing_num = Pipeline(\n", " [\n", " (\"imputer\", num_imputer),\n", " (\"scaler\", num_scaler),\n", " ]\n", ")\n", "\n", "cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=-1)\n", "cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n", "preprocessing_cat = Pipeline(\n", " [\n", " (\"imputer\", cat_imputer),\n", " (\"encoder\", cat_encoder),\n", " ]\n", ")\n", "\n", "features_preprocessing = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", " (\"prepocessing_num\", preprocessing_num, num_columns),\n", " (\"prepocessing_cat\", preprocessing_cat, cat_columns),\n", " (\"prepocessing_features\", cat_imputer, [\"yr_built\", \"zipcode\"]),\n", " ],\n", " remainder=\"passthrough\",\n", ")\n", "\n", "features_engineering = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", " (\"add_features\", HouseFeatures(), [\"yr_built\", \"zipcode\"]),\n", " ],\n", " remainder=\"passthrough\",\n", ")\n", "\n", "drop_columns = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", " (\"drop_columns\", \"drop\", columns_to_drop),\n", " ],\n", " remainder=\"passthrough\",\n", ")\n", "\n", "features_postprocessing = ColumnTransformer(\n", " verbose_feature_names_out=False,\n", " transformers=[\n", " (\"prepocessing_cat\", preprocessing_cat, [\"Region\"]),\n", " ],\n", " remainder=\"passthrough\",\n", ")\n", "\n", "pipeline_end = Pipeline(\n", " [\n", " (\"features_preprocessing\", features_preprocessing),\n", " (\"features_engineering\", features_engineering),\n", " (\"drop_columns\", drop_columns),\n", " (\"features_postprocessing\", features_postprocessing),\n", " ]\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Демонстрация работы конвейера для предобработки данных при классификации" ] }, { "cell_type": "code", "execution_count": 27, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Region_northHouse_agepricebedroomsbathroomssqft_livingsqft_lotfloorsviewcondition...date_20150506T000000date_20150507T000000date_20150508T000000date_20150509T000000date_20150510T000000date_20150511T000000date_20150512T000000date_20150513T000000date_20150514T000000date_20150515T000000
id
30462001250.078-0.945119-1.468373-1.448400-1.462069-0.205788-0.918509-0.3058830.909775...0.00.00.00.00.00.00.00.00.00.0
18530000301.0350.667867-0.3932860.5033451.6056530.4052880.935992-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
18250790051.0250.5665280.6818000.5033450.7868665.3695560.935992-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
25230393150.034-0.159739-0.393286-0.1472370.5466880.0060650.008742-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
66234002461.058-0.9507490.681800-1.448400-0.796122-0.090424-0.918509-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
..................................................................
25230691341.051-0.1203290.6818000.5033450.4375171.780808-0.9185092.3084110.909775...0.00.00.00.00.00.00.00.00.00.0
19313004121.016-0.176628-0.3932860.178054-0.970797-0.3302982.790494-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
43310004000.068-0.804370-0.393286-0.797819-1.014465-0.051023-0.918509-0.305883-0.628763...0.00.00.00.00.00.00.00.00.00.0
92129001801.0820.6256420.6818000.5033450.743197-0.2185880.935992-0.3058832.448313...0.00.00.00.00.00.00.00.00.00.0
70001007751.0380.245619-0.393286-0.147237-0.381270-0.073854-0.918509-0.3058830.909775...0.00.00.00.00.00.00.00.00.00.0
\n", "

17290 rows × 384 columns

\n", "
" ], "text/plain": [ " Region_north House_age price bedrooms bathrooms \\\n", "id \n", "3046200125 0.0 78 -0.945119 -1.468373 -1.448400 \n", "1853000030 1.0 35 0.667867 -0.393286 0.503345 \n", "1825079005 1.0 25 0.566528 0.681800 0.503345 \n", "2523039315 0.0 34 -0.159739 -0.393286 -0.147237 \n", "6623400246 1.0 58 -0.950749 0.681800 -1.448400 \n", "... ... ... ... ... ... \n", "2523069134 1.0 51 -0.120329 0.681800 0.503345 \n", "1931300412 1.0 16 -0.176628 -0.393286 0.178054 \n", "4331000400 0.0 68 -0.804370 -0.393286 -0.797819 \n", "9212900180 1.0 82 0.625642 0.681800 0.503345 \n", "7000100775 1.0 38 0.245619 -0.393286 -0.147237 \n", "\n", " sqft_living sqft_lot floors view condition ... \\\n", "id ... \n", "3046200125 -1.462069 -0.205788 -0.918509 -0.305883 0.909775 ... \n", "1853000030 1.605653 0.405288 0.935992 -0.305883 -0.628763 ... \n", "1825079005 0.786866 5.369556 0.935992 -0.305883 -0.628763 ... \n", "2523039315 0.546688 0.006065 0.008742 -0.305883 -0.628763 ... \n", "6623400246 -0.796122 -0.090424 -0.918509 -0.305883 -0.628763 ... \n", "... ... ... ... ... ... ... \n", "2523069134 0.437517 1.780808 -0.918509 2.308411 0.909775 ... \n", "1931300412 -0.970797 -0.330298 2.790494 -0.305883 -0.628763 ... \n", "4331000400 -1.014465 -0.051023 -0.918509 -0.305883 -0.628763 ... \n", "9212900180 0.743197 -0.218588 0.935992 -0.305883 2.448313 ... \n", "7000100775 -0.381270 -0.073854 -0.918509 -0.305883 0.909775 ... \n", "\n", " date_20150506T000000 date_20150507T000000 date_20150508T000000 \\\n", "id \n", "3046200125 0.0 0.0 0.0 \n", "1853000030 0.0 0.0 0.0 \n", "1825079005 0.0 0.0 0.0 \n", "2523039315 0.0 0.0 0.0 \n", "6623400246 0.0 0.0 0.0 \n", "... ... ... ... \n", "2523069134 0.0 0.0 0.0 \n", "1931300412 0.0 0.0 0.0 \n", "4331000400 0.0 0.0 0.0 \n", "9212900180 0.0 0.0 0.0 \n", "7000100775 0.0 0.0 0.0 \n", "\n", " date_20150509T000000 date_20150510T000000 date_20150511T000000 \\\n", "id \n", "3046200125 0.0 0.0 0.0 \n", "1853000030 0.0 0.0 0.0 \n", "1825079005 0.0 0.0 0.0 \n", "2523039315 0.0 0.0 0.0 \n", "6623400246 0.0 0.0 0.0 \n", "... ... ... ... \n", "2523069134 0.0 0.0 0.0 \n", "1931300412 0.0 0.0 0.0 \n", "4331000400 0.0 0.0 0.0 \n", "9212900180 0.0 0.0 0.0 \n", "7000100775 0.0 0.0 0.0 \n", "\n", " date_20150512T000000 date_20150513T000000 date_20150514T000000 \\\n", "id \n", "3046200125 0.0 0.0 0.0 \n", "1853000030 0.0 0.0 0.0 \n", "1825079005 0.0 0.0 0.0 \n", "2523039315 0.0 0.0 0.0 \n", "6623400246 0.0 0.0 0.0 \n", "... ... ... ... \n", "2523069134 0.0 0.0 0.0 \n", "1931300412 0.0 0.0 0.0 \n", "4331000400 0.0 0.0 0.0 \n", "9212900180 0.0 0.0 0.0 \n", "7000100775 0.0 0.0 0.0 \n", "\n", " date_20150515T000000 \n", "id \n", "3046200125 0.0 \n", "1853000030 0.0 \n", "1825079005 0.0 \n", "2523039315 0.0 \n", "6623400246 0.0 \n", "... ... \n", "2523069134 0.0 \n", "1931300412 0.0 \n", "4331000400 0.0 \n", "9212900180 0.0 \n", "7000100775 0.0 \n", "\n", "[17290 rows x 384 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "preprocessing_result = pipeline_end.fit_transform(X_train)\n", "preprocessed_df = pd.DataFrame(\n", " preprocessing_result,\n", " columns=pipeline_end.get_feature_names_out(),\n", ")\n", "\n", "preprocessed_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Формирование набора моделей для классификации\n", "\n", "logistic -- логистическая регрессия\n", "\n", "ridge -- гребневая регрессия\n", "\n", "decision_tree -- дерево решений\n", "\n", "knn -- k-ближайших соседей\n", "\n", "naive_bayes -- наивный Байесовский классификатор\n", "\n", "gradient_boosting -- метод градиентного бустинга (набор деревьев решений)\n", "\n", "random_forest -- метод случайного леса (набор деревьев решений)\n", "\n", "mlp -- многослойный персептрон (нейронная сеть)\n", "\n", "Документация: https://scikit-learn.org/1.5/supervised_learning.html" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n", "\n", "class_models = {\n", " \"logistic\": {\"model\": linear_model.LogisticRegression()},\n", " # \"ridge\": {\"model\": linear_model.RidgeClassifierCV(cv=5, class_weight=\"balanced\")},\n", " \"ridge\": {\"model\": linear_model.LogisticRegression(penalty=\"l2\", class_weight=\"balanced\")},\n", " \"decision_tree\": {\n", " \"model\": tree.DecisionTreeClassifier(max_depth=7, random_state=random_state)\n", " },\n", " \"knn\": {\"model\": neighbors.KNeighborsClassifier(n_neighbors=7)},\n", " \"naive_bayes\": {\"model\": naive_bayes.GaussianNB()},\n", " \"gradient_boosting\": {\n", " \"model\": ensemble.GradientBoostingClassifier(n_estimators=210)\n", " },\n", " \"random_forest\": {\n", " \"model\": ensemble.RandomForestClassifier(\n", " max_depth=11, class_weight=\"balanced\", random_state=random_state\n", " )\n", " },\n", " \"mlp\": {\n", " \"model\": neural_network.MLPClassifier(\n", " hidden_layer_sizes=(7,),\n", " max_iter=500,\n", " early_stopping=True,\n", " random_state=random_state,\n", " )\n", " },\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Обучение моделей на обучающем наборе данных и оценка на тестовом" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: logistic\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:469: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n", "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: ridge\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:469: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n", "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: decision_tree\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: knn\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: naive_bayes\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: gradient_boosting\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: random_forest\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: mlp\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] } ], "source": [ "import numpy as np\n", "from sklearn import metrics\n", "\n", "for model_name in class_models.keys():\n", " print(f\"Model: {model_name}\")\n", " model = class_models[model_name][\"model\"]\n", "\n", " model_pipeline = Pipeline([(\"pipeline\", pipeline_end), (\"model\", model)])\n", " model_pipeline = model_pipeline.fit(X_train, y_train.values.ravel())\n", "\n", " y_train_predict = model_pipeline.predict(X_train)\n", " y_test_probs = model_pipeline.predict_proba(X_test)[:, 1]\n", " y_test_predict = np.where(y_test_probs > 0.5, 1, 0)\n", "\n", " class_models[model_name][\"pipeline\"] = model_pipeline\n", " class_models[model_name][\"probs\"] = y_test_probs\n", " class_models[model_name][\"preds\"] = y_test_predict\n", "\n", " class_models[model_name][\"Precision_train\"] = metrics.precision_score(\n", " y_train, y_train_predict\n", " )\n", " class_models[model_name][\"Precision_test\"] = metrics.precision_score(\n", " y_test, y_test_predict\n", " )\n", " class_models[model_name][\"Recall_train\"] = metrics.recall_score(\n", " y_train, y_train_predict\n", " )\n", " class_models[model_name][\"Recall_test\"] = metrics.recall_score(\n", " y_test, y_test_predict\n", " )\n", " class_models[model_name][\"Accuracy_train\"] = metrics.accuracy_score(\n", " y_train, y_train_predict\n", " )\n", " class_models[model_name][\"Accuracy_test\"] = metrics.accuracy_score(\n", " y_test, y_test_predict\n", " )\n", " class_models[model_name][\"ROC_AUC_test\"] = metrics.roc_auc_score(\n", " y_test, y_test_probs\n", " )\n", " class_models[model_name][\"F1_train\"] = metrics.f1_score(y_train, y_train_predict)\n", " class_models[model_name][\"F1_test\"] = metrics.f1_score(y_test, y_test_predict)\n", " class_models[model_name][\"MCC_test\"] = metrics.matthews_corrcoef(\n", " y_test, y_test_predict\n", " )\n", " class_models[model_name][\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(\n", " y_test, y_test_predict\n", " )\n", " class_models[model_name][\"Confusion_matrix\"] = metrics.confusion_matrix(\n", " y_test, y_test_predict\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Сводная таблица оценок качества для использованных моделей классификации\n", "\n", "Документация: https://scikit-learn.org/1.5/modules/model_evaluation.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Матрица неточностей" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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U7i7u8PT0xM3b97EwIEDdfp8IiKSH2azdsxmqk28WQfVmoEDB6JOnTro1asXjh49iqSkJMTGxmL8+PH4448/AAATJkzAxx9/jB9++AFXrlzB+++/r/U5Iw0aNMDQoUPx7rvv4ocffpD2uWPHDgCAj48PBEHA7t27cffuXTx69Aj29vaYNGkSIiMjsXnzZty4cQNnz57Fp59+Kl1kO3r0aFy7dg2TJ09GYmIivvzyS0RHR+v0fRs3bozk5GRs374dN27cwMqVK8u9uNnKygpDhw7F+fPncfToUYwfPx79+/eHh4cHACAqKgoLFy7EypUrcfXqVVy4cAGbNm3C0qVLdeoPERHR3zGbmc1Ug2r7IjUyDU9eEKzL9jt37ohDhgwR69SpI1paWooNGzYUR40aJWZnZ4uiWHIB8IQJE0QHBwfRyclJnDhxojhkyJAKLwgWRVHMy8sTIyMjxXr16olKpVL08/MTN27cKG2fO3eu6OHhIQqCIA4dOlQUxZKLmJcvXy42bdpUtLCwEOvWrSuGhYWJcXFx0vt27dol+vn5iZaWlmL79u3FjRs36nxB8OTJk0VXV1fRzs5OfOutt8Rly5aJjo6O0vbZs2eLrVq1EtesWSN6enqKVlZWYr9+/cTMzEyN/W7btk1s3bq1qFQqRWdnZ7FDhw7izp07RVHkBcFERFSC2Vw+ZjMZCkEUK7iykoiIiIiIiKoFpyYSERERERHVMBZiRERERERENYyFGBERERERUQ1jIUZERERERFTDWIgRERERERHVMBZiRERERERENYyFGBERERERUQ1jIUZERERERFTDWIgRERERERHVMBZiRERERERENYyFGBERERERUQ1jIUZERERERFTDWIgRERERERHVMBZipHdz5syBIAgGs+9bt25BEARER0dXS5+IiIioakpz/N69e7XdFaJax0KMqIbs3bsXc+bMqe1uEBEREZEBYCFGRmXGjBnIy8vT6T0+Pj7Iy8vD4MGDq6lXVbN3715ERUXVah+IiIiIyDCY13YHiHRhbm4Oc3Pd/toKggArK6tq6lH1KC4uhlqthlKprO2uEBEREVE14C9i9EyOHTuGF154AVZWVmjUqBE+++yzcttt3boVQUFBsLa2houLCwYMGICUlJQy7U6ePInXX38dzs7OsLW1RcuWLbFixQppe3nXiMXExKBdu3ZwcnKC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mDlzJubOnYulS5fi8uXLOHPmDNauXYsvvviiho6G7jk4OKBVq1aIjIyUhpB07twZJ0+exOXLl6UA0KRJE0RFReHIkSO4cOEC3njjjVKzaTVs2BBHjx7FjRs3cOfOHajVaoSFhSE9PR2DBw/G8ePHkZCQgF27dmHUqFGlAgMREekGY7N+YWymmsRETMYUCgV+++03ODg4oHPnzujevTsaNWqETZs2Vfg5f39/2NvbIyAgANbW1gCKT/YqlUpjDLqRkRE2btyIuLg4tGzZEhMmTMCCBQs02jIxMcHSpUvx9ddfw8PDA3379gVQPB3s6tWrsXbtWvj7+yM4OBjr1q2TptQ1VMHBwRrH0dHREX5+fnBzc0OzZs0AAB999BHatm2L0NBQhISEwM3NDf369dNoZ9KkSTA2Noafnx+cnZ2RmJgIDw8PHD58GCqVCj169IC/vz/Cw8Nhb28PIyOeCoiI9AFjs/5hbKaaohBCCF13goiIiIiISE6YahMREREREdUyJmJERERERES1jIkYERERERFRLWMiRkREREREVMuYiBEREREREdUyJmJERERERES1jIkYERERERFRLWMiRnXOyJEjNV6SGBISgvDw8FrvR3R0NBQKBTIyMsqto1Ao8Ouvv1a5zYiICAQEBPyrft24cQMKhQLx8fH/qh0iIqKqYmyuGGMzlYWJGGnFyJEjoVAooFAooFQq4ePjg1mzZqGoqKjGv3vr1q2YPXt2lepW5QRNRERkCBibifSbia47QIajZ8+eWLt2LfLz8/HHH38gLCwMpqammDZtWqm6BQUFUCqVWvleR0dHrbRDRERkaBibifQX74iR1piZmcHNzQ1eXl4YN24cunfvjt9//x3AwyELn376KTw8PNCsWTMAQFJSEgYOHAh7e3s4Ojqib9++uHHjhtSmSqXCxIkTYW9vj3r16mHKlCkQQmh87+PDH/Lz8zF16lR4enrCzMwMPj4++Pbbb3Hjxg106dIFAODg4ACFQoGRI0cCANRqNebOnQtvb29YWFigdevW+PnnnzW+548//kDTpk1hYWGBLl26aPSzqqZOnYqmTZvC0tISjRo1wscff4zCwsJS9b7++mt4enrC0tISAwcORGZmpkb56tWr0bx5c5ibm8PX1xfLly+vdl+IiMjwMTZXjrGZdIWJGNUYCwsLFBQUSOt79+7FpUuXEBUV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FiiaW28qR44cQb9+/TB9+nRERkbC3d0dmzZtwvz58yvd19WrV5cIPgqFwmR9JSIi28DYbBxjM5kTEzEyGRcXFwQEBFS4fps2bbB582bUqlWrxMhTsdq1a+PYsWMICwsDUDS6dOLECbRp06bU+sHBwdDpdEhISEDnzp1LlBeP+mm1Wv2+oKAgqFQqpKamljla16xZM/3NzcWOHj1a/pf8k8OHD8Pf3x/vvfeeft9vv/1Wol5qairS09Ph6+ur/xw7OzsEBgbCx8cHvr6+uHLlCvr161epzyciIvlhbDaOsZnMiYt1kNn069cPNWvWRM+ePXHgwAFcvXoV8fHxGDVqFK5duwYAGD16ND788ENs27YNFy5cwFtvvWX0OSP169dHVFQU3njjDWzbtk3f5pYtWwAA/v7+kCQJO3bswO3bt5GTkwM3NzeMHTsWMTExWL9+PZKTk3Hy5El8/PHH+ptshw0bhkuXLmHcuHFISkrCxo0bERsbW6nv27hxY6SmpmLTpk1ITk7GkiVLSr252dHREVFRUTh9+jQOHDiAUaNGoU+fPtBoNACA6dOnY86cOViyZAkuXryIM2fOYN26dViwYEGl+kNERPRXjM2MzVSNzH2TGtmGP98QXJnyjIwMMWDAAFGzZk2hUqlEw4YNxdChQ0VWVpYQougG4NGjRwu1Wi08PDzEmDFjxIABA8q8IVgIIR49eiRiYmJE7dq1hVKpFAEBAWLt2rX68hkzZgiNRiMkSRJRUVFCiKKbmBctWiQCAwOFg4OD8Pb2FpGRkSIhIUH/vu3bt4uAgAChUqlEx44dxdq1ayt9Q/C4ceNEjRo1hKurq3jllVfEwoULhbu7u7586tSpolWrVmL58uXC19dXODo6ipdffllkZmYatLthwwYREhIilEql8PT0FGFhYWLr1q1CCN4QTERERRibS8fYTJZCEqKMOyuJiIiIiIioSnBqIhERERERUTVjIkZERERERFTNmIgRERERERFVMyZiRERERERE1YyJGBERERERUTVjIkZERERERFTNmIgRERERERFVMyZiRERERERE1YyJGBERERERUTVjIkZERERERFTNmIgRERERERFVs/8HCZ4FJCWgHSkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import ConfusionMatrixDisplay\n", "import matplotlib.pyplot as plt\n", "\n", "_, ax = plt.subplots(int(len(class_models) / 2), 2, figsize=(12, 10), sharex=False, sharey=False)\n", "for index, key in enumerate(class_models.keys()):\n", " c_matrix = class_models[key][\"Confusion_matrix\"]\n", " disp = ConfusionMatrixDisplay(\n", " confusion_matrix=c_matrix, display_labels=[\"no water\", \"water\"]\n", " ).plot(ax=ax.flat[index])\n", " disp.ax_.set_title(key)\n", "\n", "plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.1)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Точность, полнота, верность (аккуратность), F-мера" ] }, { "cell_type": "code", "execution_count": 34, "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", "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
logistic0.8137250.6764710.6384620.6969700.9961830.9951420.7155170.686567
decision_tree0.9343070.6785710.9846150.5757580.9993640.9946800.9588010.622951
gradient_boosting1.0000000.6129031.0000000.5757581.0000000.9939861.0000000.593750
mlp0.7894740.5862070.5769230.5151520.9956620.9935230.6666670.548387
knn0.9500001.0000000.1461540.0606060.9935220.9928290.2533330.114286
random_forest0.3724930.3333331.0000000.8787880.9873340.9856580.5427970.483333
ridge0.3439150.3009711.0000000.9393940.9856560.9828820.5118110.455882
naive_bayes0.0186190.0069161.0000000.3636360.6037020.5965760.0365580.013575
\n" ], "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n", " [\n", " \"Precision_train\",\n", " \"Precision_test\",\n", " \"Recall_train\",\n", " \"Recall_test\",\n", " \"Accuracy_train\",\n", " \"Accuracy_test\",\n", " \"F1_train\",\n", " \"F1_test\",\n", " ]\n", "]\n", "class_metrics.sort_values(\n", " by=\"Accuracy_test\", ascending=False\n", ").style.background_gradient(\n", " cmap=\"plasma\",\n", " low=0.3,\n", " high=1,\n", " subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n", ").background_gradient(\n", " cmap=\"viridis\",\n", " low=1,\n", " high=0.3,\n", " subset=[\n", " \"Precision_train\",\n", " \"Precision_test\",\n", " \"Recall_train\",\n", " \"Recall_test\",\n", " ],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса" ] }, { "cell_type": "code", "execution_count": 35, "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", "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
logistic0.9951420.6865670.9960730.6841200.684197
ridge0.9828820.4558820.9954160.4495170.526537
mlp0.9935230.5483870.9944200.5451390.546293
gradient_boosting0.9939860.5937500.9941370.5907230.591016
random_forest0.9856580.4833330.9928800.4775500.536289
knn0.9928290.1142860.8449710.1135120.245298
decision_tree0.9946800.6229510.7861800.6202900.622414
naive_bayes0.5965760.0135750.481002-0.001429-0.006747
\n" ], "text/plain": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n", " [\n", " \"Accuracy_test\",\n", " \"F1_test\",\n", " \"ROC_AUC_test\",\n", " \"Cohen_kappa_test\",\n", " \"MCC_test\",\n", " ]\n", "]\n", "class_metrics.sort_values(by=\"ROC_AUC_test\", ascending=False).style.background_gradient(\n", " cmap=\"plasma\",\n", " low=0.3,\n", " high=1,\n", " subset=[\n", " \"ROC_AUC_test\",\n", " \"MCC_test\",\n", " \"Cohen_kappa_test\",\n", " ],\n", ").background_gradient(\n", " cmap=\"viridis\",\n", " low=1,\n", " high=0.3,\n", " subset=[\n", " \"Accuracy_test\",\n", " \"F1_test\",\n", " ],\n", ")" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'logistic'" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "best_model = str(class_metrics.sort_values(by=\"MCC_test\", ascending=False).iloc[0].name)\n", "\n", "display(best_model)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Вывод данных с ошибкой предсказания для оценки" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\ogoro\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\preprocessing\\_encoders.py:242: UserWarning: Found unknown categories in columns [0] during transform. These unknown categories will be encoded as all zeros\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "'Error items count: 21'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datePredictedpricebedroomsbathroomssqft_livingsqft_lotfloorswaterfrontview...gradesqft_abovesqft_basementyr_builtyr_renovatedzipcodelatlongsqft_living15sqft_lot15
id
12103904220150313T0000000425000.032.7536101073861.513...83130480191819629802347.3351-122.362263042126
62406910820140812T00000003200000.043.257000282061.014...1235003500199109807547.5928-122.086491314663
102503908620140916T00000001875000.032.503280291112.013...1132800192509819947.6699-122.416353021074
173280078020150212T00000013065000.053.00415075002.504...113510640190909811947.6303-122.36222504050
212203909420141126T0000000705000.033.001970209782.013...91770200198009807047.3844-122.438228075396
292303924320141113T0000000340000.041.001200118341.013...612000197209807047.4557-122.443167047462
302405901420150325T00000001900000.042.253020114891.513...102110910191619889804047.5395-122.210389011489
322204902420140522T0000001361000.031.00110040461.504...611000192209819847.3440-122.33125507847
342604928420140819T00000002300000.043.254110159292.014...1227201390200109811547.6934-122.271264015929
374160002020140915T0000001540000.032.252100200181.004...81470630194809816647.4544-122.366241017196
376050033620141126T00000012125000.042.753190195132.004...1031900198209803447.6991-122.235275013496
386740017520150224T0000001850000.021.50180041441.004...7900900196209811647.5934-122.39020904173
632900005020150310T0000000641500.011.00100090841.013...710000195009814647.5007-122.38210906536
676270002020141013T00000017700000.068.0012050276002.503...1385703480191019879810247.6298-122.32339408800
727810051520140821T00000001295000.022.502910194492.014...91940970198509817747.7729-122.393254023598
749000004020140718T00000012535000.053.253730106261.004...1037300196309800447.6240-122.221418019110
763120029220140626T0000001669000.021.751950107661.003...61160790195209816647.4504-122.377178011721
763680004120140625T0000000995000.034.504380470442.013...93720660196819909816647.4734-122.365246018512
890750007020150413T00000015350000.055.008000239852.004...1267201280200909800447.6232-122.220460021750
896480089020150109T00000013200000.033.254560133631.004...1127601800199509800447.6205-122.214406013362
920890003720140919T00000016885000.067.759890313742.004...1388601030200109803947.6305-122.240454042730
\n", "

21 rows × 21 columns

\n", "
" ], "text/plain": [ " date Predicted price bedrooms bathrooms \\\n", "id \n", "121039042 20150313T000000 0 425000.0 3 2.75 \n", "624069108 20140812T000000 0 3200000.0 4 3.25 \n", "1025039086 20140916T000000 0 1875000.0 3 2.50 \n", "1732800780 20150212T000000 1 3065000.0 5 3.00 \n", "2122039094 20141126T000000 0 705000.0 3 3.00 \n", "2923039243 20141113T000000 0 340000.0 4 1.00 \n", "3024059014 20150325T000000 0 1900000.0 4 2.25 \n", "3222049024 20140522T000000 1 361000.0 3 1.00 \n", "3426049284 20140819T000000 0 2300000.0 4 3.25 \n", "3741600020 20140915T000000 1 540000.0 3 2.25 \n", "3760500336 20141126T000000 1 2125000.0 4 2.75 \n", "3867400175 20150224T000000 1 850000.0 2 1.50 \n", "6329000050 20150310T000000 0 641500.0 1 1.00 \n", "6762700020 20141013T000000 1 7700000.0 6 8.00 \n", "7278100515 20140821T000000 0 1295000.0 2 2.50 \n", "7490000040 20140718T000000 1 2535000.0 5 3.25 \n", "7631200292 20140626T000000 1 669000.0 2 1.75 \n", "7636800041 20140625T000000 0 995000.0 3 4.50 \n", "8907500070 20150413T000000 1 5350000.0 5 5.00 \n", "8964800890 20150109T000000 1 3200000.0 3 3.25 \n", "9208900037 20140919T000000 1 6885000.0 6 7.75 \n", "\n", " sqft_living sqft_lot floors waterfront view ... grade \\\n", "id ... \n", "121039042 3610 107386 1.5 1 3 ... 8 \n", "624069108 7000 28206 1.0 1 4 ... 12 \n", "1025039086 3280 29111 2.0 1 3 ... 11 \n", "1732800780 4150 7500 2.5 0 4 ... 11 \n", "2122039094 1970 20978 2.0 1 3 ... 9 \n", "2923039243 1200 11834 1.0 1 3 ... 6 \n", "3024059014 3020 11489 1.5 1 3 ... 10 \n", "3222049024 1100 4046 1.5 0 4 ... 6 \n", "3426049284 4110 15929 2.0 1 4 ... 12 \n", "3741600020 2100 20018 1.0 0 4 ... 8 \n", "3760500336 3190 19513 2.0 0 4 ... 10 \n", "3867400175 1800 4144 1.0 0 4 ... 7 \n", "6329000050 1000 9084 1.0 1 3 ... 7 \n", "6762700020 12050 27600 2.5 0 3 ... 13 \n", "7278100515 2910 19449 2.0 1 4 ... 9 \n", "7490000040 3730 10626 1.0 0 4 ... 10 \n", "7631200292 1950 10766 1.0 0 3 ... 6 \n", "7636800041 4380 47044 2.0 1 3 ... 9 \n", "8907500070 8000 23985 2.0 0 4 ... 12 \n", "8964800890 4560 13363 1.0 0 4 ... 11 \n", "9208900037 9890 31374 2.0 0 4 ... 13 \n", "\n", " sqft_above sqft_basement yr_built yr_renovated zipcode \\\n", "id \n", "121039042 3130 480 1918 1962 98023 \n", "624069108 3500 3500 1991 0 98075 \n", "1025039086 3280 0 1925 0 98199 \n", "1732800780 3510 640 1909 0 98119 \n", "2122039094 1770 200 1980 0 98070 \n", "2923039243 1200 0 1972 0 98070 \n", "3024059014 2110 910 1916 1988 98040 \n", "3222049024 1100 0 1922 0 98198 \n", "3426049284 2720 1390 2001 0 98115 \n", "3741600020 1470 630 1948 0 98166 \n", "3760500336 3190 0 1982 0 98034 \n", "3867400175 900 900 1962 0 98116 \n", "6329000050 1000 0 1950 0 98146 \n", "6762700020 8570 3480 1910 1987 98102 \n", "7278100515 1940 970 1985 0 98177 \n", "7490000040 3730 0 1963 0 98004 \n", "7631200292 1160 790 1952 0 98166 \n", "7636800041 3720 660 1968 1990 98166 \n", "8907500070 6720 1280 2009 0 98004 \n", "8964800890 2760 1800 1995 0 98004 \n", "9208900037 8860 1030 2001 0 98039 \n", "\n", " lat long sqft_living15 sqft_lot15 \n", "id \n", "121039042 47.3351 -122.362 2630 42126 \n", "624069108 47.5928 -122.086 4913 14663 \n", "1025039086 47.6699 -122.416 3530 21074 \n", "1732800780 47.6303 -122.362 2250 4050 \n", "2122039094 47.3844 -122.438 2280 75396 \n", "2923039243 47.4557 -122.443 1670 47462 \n", "3024059014 47.5395 -122.210 3890 11489 \n", "3222049024 47.3440 -122.331 2550 7847 \n", "3426049284 47.6934 -122.271 2640 15929 \n", "3741600020 47.4544 -122.366 2410 17196 \n", "3760500336 47.6991 -122.235 2750 13496 \n", "3867400175 47.5934 -122.390 2090 4173 \n", "6329000050 47.5007 -122.382 1090 6536 \n", "6762700020 47.6298 -122.323 3940 8800 \n", "7278100515 47.7729 -122.393 2540 23598 \n", "7490000040 47.6240 -122.221 4180 19110 \n", "7631200292 47.4504 -122.377 1780 11721 \n", "7636800041 47.4734 -122.365 2460 18512 \n", "8907500070 47.6232 -122.220 4600 21750 \n", "8964800890 47.6205 -122.214 4060 13362 \n", "9208900037 47.6305 -122.240 4540 42730 \n", "\n", "[21 rows x 21 columns]" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "preprocessing_result = pipeline_end.transform(X_test)\n", "preprocessed_df = pd.DataFrame(\n", " preprocessing_result,\n", " columns=pipeline_end.get_feature_names_out(),\n", ")\n", "\n", "y_pred = class_models[best_model][\"preds\"]\n", "\n", "error_index = y_test[y_test[\"waterfront\"] != y_pred].index.tolist()\n", "display(f\"Error items count: {len(error_index)}\")\n", "\n", "error_predicted = pd.Series(y_pred, index=y_test.index).loc[error_index]\n", "error_df = X_test.loc[error_index].copy()\n", "error_df.insert(loc=1, column=\"Predicted\", value=error_predicted)\n", "error_df.sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Пример использования обученной модели (конвейера) для предсказания" ] }, { "cell_type": "code", "execution_count": 44, "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", "
datepricebedroomsbathroomssqft_livingsqft_lotfloorswaterfrontviewconditiongradesqft_abovesqft_basementyr_builtyr_renovatedzipcodelatlongsqft_living15sqft_lot15
62406910820140812T0000003200000.043.257000282061.01441235003500199109807547.5928-122.086491314663
\n", "
" ], "text/plain": [ " date price bedrooms bathrooms sqft_living sqft_lot \\\n", "624069108 20140812T000000 3200000.0 4 3.25 7000 28206 \n", "\n", " floors waterfront view condition grade sqft_above sqft_basement \\\n", "624069108 1.0 1 4 4 12 3500 3500 \n", "\n", " yr_built yr_renovated zipcode lat long sqft_living15 \\\n", "624069108 1991 0 98075 47.5928 -122.086 4913 \n", "\n", " sqft_lot15 \n", "624069108 14663 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Region_northHouse_agepricebedroomsbathroomssqft_livingsqft_lotfloorsviewcondition...date_20150506T000000date_20150507T000000date_20150508T000000date_20150509T000000date_20150510T000000date_20150511T000000date_20150512T000000date_20150513T000000date_20150514T000000date_20150515T000000
6240691081.033.07.4942060.68181.4792175.3720720.29821-0.9185094.9227040.909775...0.00.00.00.00.00.00.00.00.00.0
\n", "

1 rows × 384 columns

\n", "
" ], "text/plain": [ " Region_north House_age price bedrooms bathrooms \\\n", "624069108 1.0 33.0 7.494206 0.6818 1.479217 \n", "\n", " sqft_living sqft_lot floors view condition ... \\\n", "624069108 5.372072 0.29821 -0.918509 4.922704 0.909775 ... \n", "\n", " date_20150506T000000 date_20150507T000000 date_20150508T000000 \\\n", "624069108 0.0 0.0 0.0 \n", "\n", " date_20150509T000000 date_20150510T000000 date_20150511T000000 \\\n", "624069108 0.0 0.0 0.0 \n", "\n", " date_20150512T000000 date_20150513T000000 date_20150514T000000 \\\n", "624069108 0.0 0.0 0.0 \n", "\n", " date_20150515T000000 \n", "624069108 0.0 \n", "\n", "[1 rows x 384 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'predicted: 0 (proba: [0.8437713 0.1562287])'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'real: 1'" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = class_models[best_model][\"pipeline\"]\n", "\n", "example_id = 624069108\n", "test = pd.DataFrame(X_test.loc[example_id, :]).T\n", "test_preprocessed = pd.DataFrame(preprocessed_df.loc[example_id, :]).T\n", "display(test)\n", "display(test_preprocessed)\n", "result_proba = model.predict_proba(test)[0]\n", "result = model.predict(test)[0]\n", "real = int(y_test.loc[example_id].values[0])\n", "display(f\"predicted: {result} (proba: {result_proba})\")\n", "display(f\"real: {real}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Подбор гиперпараметров методом поиска по сетке\n", "\n", "https://www.kaggle.com/code/sociopath00/random-forest-using-gridsearchcv\n", "\n", "https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import GridSearchCV\n", "\n", "optimized_model_type = \"random_forest\"\n", "\n", "random_forest_model = class_models[optimized_model_type][\"pipeline\"]\n", "\n", "param_grid = {\n", " \"model__n_estimators\": [10, 20, 30, 40, 50, 100, 150, 200, 250, 500],\n", " \"model__max_features\": [\"sqrt\", \"log2\", 2],\n", " \"model__max_depth\": [2, 3, 4, 5, 6, 7, 8, 9 ,10],\n", " \"model__criterion\": [\"gini\", \"entropy\", \"log_loss\"],\n", "}\n", "\n", "gs_optomizer = GridSearchCV(\n", " estimator=random_forest_model, param_grid=param_grid, n_jobs=-1\n", ")\n", "gs_optomizer.fit(X_train, y_train.values.ravel())\n", "gs_optomizer.best_params_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Обучение модели с новыми гиперпараметрами" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "optimized_model = ensemble.RandomForestClassifier(\n", " random_state=random_state,\n", " criterion=\"gini\",\n", " max_depth=7,\n", " max_features=\"sqrt\",\n", " n_estimators=30,\n", ")\n", "\n", "result = {}\n", "\n", "result[\"pipeline\"] = Pipeline([(\"pipeline\", pipeline_end), (\"model\", optimized_model)]).fit(X_train, y_train.values.ravel())\n", "result[\"train_preds\"] = result[\"pipeline\"].predict(X_train)\n", "result[\"probs\"] = result[\"pipeline\"].predict_proba(X_test)[:, 1]\n", "result[\"preds\"] = np.where(result[\"probs\"] > 0.5, 1, 0)\n", "\n", "result[\"Precision_train\"] = metrics.precision_score(y_train, result[\"train_preds\"])\n", "result[\"Precision_test\"] = metrics.precision_score(y_test, result[\"preds\"])\n", "result[\"Recall_train\"] = metrics.recall_score(y_train, result[\"train_preds\"])\n", "result[\"Recall_test\"] = metrics.recall_score(y_test, result[\"preds\"])\n", "result[\"Accuracy_train\"] = metrics.accuracy_score(y_train, result[\"train_preds\"])\n", "result[\"Accuracy_test\"] = metrics.accuracy_score(y_test, result[\"preds\"])\n", "result[\"ROC_AUC_test\"] = metrics.roc_auc_score(y_test, result[\"probs\"])\n", "result[\"F1_train\"] = metrics.f1_score(y_train, result[\"train_preds\"])\n", "result[\"F1_test\"] = metrics.f1_score(y_test, result[\"preds\"])\n", "result[\"MCC_test\"] = metrics.matthews_corrcoef(y_test, result[\"preds\"])\n", "result[\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(y_test, result[\"preds\"])\n", "result[\"Confusion_matrix\"] = metrics.confusion_matrix(y_test, result[\"preds\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Формирование данных для оценки старой и новой версии модели" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "optimized_metrics = pd.DataFrame(columns=list(result.keys()))\n", "optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n", " data=class_models[optimized_model_type]\n", ")\n", "optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n", " data=result\n", ")\n", "optimized_metrics.insert(loc=0, column=\"Name\", value=[\"Old\", \"New\"])\n", "optimized_metrics = optimized_metrics.set_index(\"Name\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Оценка параметров старой и новой модели" ] }, { "cell_type": "code", "execution_count": 99, "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", "
 Precision_trainPrecision_testRecall_trainRecall_testAccuracy_trainAccuracy_testF1_trainF1_test
Name        
Old0.8943400.7941180.8681320.7826090.9101120.8379890.8810410.788321
New0.8672200.8225810.7655680.7391300.8651690.8379890.8132300.778626
\n" ], "text/plain": [ "" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimized_metrics[\n", " [\n", " \"Precision_train\",\n", " \"Precision_test\",\n", " \"Recall_train\",\n", " \"Recall_test\",\n", " \"Accuracy_train\",\n", " \"Accuracy_test\",\n", " \"F1_train\",\n", " \"F1_test\",\n", " ]\n", "].style.background_gradient(\n", " cmap=\"plasma\",\n", " low=0.3,\n", " high=1,\n", " subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n", ").background_gradient(\n", " cmap=\"viridis\",\n", " low=1,\n", " high=0.3,\n", " subset=[\n", " \"Precision_train\",\n", " \"Precision_test\",\n", " \"Recall_train\",\n", " \"Recall_test\",\n", " ],\n", ")" ] }, { "cell_type": "code", "execution_count": 100, "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", "
 Accuracy_testF1_testROC_AUC_testCohen_kappa_testMCC_test
Name     
Old0.8379890.7883210.8588930.6571110.657157
New0.8379890.7786260.8597500.6514470.653765
\n" ], "text/plain": [ "" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimized_metrics[\n", " [\n", " \"Accuracy_test\",\n", " \"F1_test\",\n", " \"ROC_AUC_test\",\n", " \"Cohen_kappa_test\",\n", " \"MCC_test\",\n", " ]\n", "].style.background_gradient(\n", " cmap=\"plasma\",\n", " low=0.3,\n", " high=1,\n", " subset=[\n", " \"ROC_AUC_test\",\n", " \"MCC_test\",\n", " \"Cohen_kappa_test\",\n", " ],\n", ").background_gradient(\n", " cmap=\"viridis\",\n", " low=1,\n", " high=0.3,\n", " subset=[\n", " \"Accuracy_test\",\n", " \"F1_test\",\n", " ],\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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u+5SRESEqlevru7du+vAgQPuYxYVFWn48OGKiIhQjRo1NGLECLn+cBbmj20k+fn5+sc//qHY2FgFBwerYcOGmjVrlg4cOKCOHTtKkqpVqyabzeY+E+N0OjVx4kTFxcUpNDRULVu21DvvvOPxPh9++KEaN26s0NBQdezY0WOcJfWPf/xDjRs3VpUqVdSgQQONGjVKhYWFxfZ79dVXFRsbqypVquiuu+5y3yzyrNdee00JCQkKCQlRfHy8XnnlFa/HAutZv369Bg4cqC1btmjNmjUqLCxUly5ddPLkSfc+w4YN0/vvv6/Fixdr/fr1Sk9PV8+ePX04asB3yLVLI9dgBSxEAlMLDQ3VL7/84v567dq1stvtWrNmjSSpsLBQXbt2VWJiojZs2KDAwEBNmDBB3bp109dff62goCC98MILmjNnjl5//XUlJCTohRde0NKlS9WpU6cLvu+9996rzZs3a9q0aWrZsqX279+vn3/+WbGxsVqyZImSk5O1e/du2e12hYaGSjozA/Hmm29q5syZatSokT799FP97W9/U82aNXXjjTcqLS1NPXv21MCBA/XAAw9o27ZtevTRR73+noSHh2vOnDmKiYnRzp07df/99ys8PFwjRoxw77N3714tWrRI77//vnJzc9W/f389/PDDmj9/viRp/vz5Gj16tF5++WVdffXV+uqrr3T//feratWq6tOnj9djgg/46D5tq1at8vh6zpw5qlWrllJTU9WhQwfl5ORo1qxZWrBggfu/sdmzZyshIUFbtmzx6qJtwIzIteLINUgy/f1HKdpgSi6XS2vXrtXq1as1ePBg9+NVq1bVa6+9pqCgIEnSm2++KafTqddee002m03SmT8QIyIitG7dOnXp0kVTp07VyJEj3Wf6Z86cqdWrV1/wvX/44QctWrRIa9asUVJSkiSpQYMG7uerV68uSapVq5YiIiIknTmD+eyzz+qjjz5yL//aoEEDbdy4Ua+++qpuvPFGzZgxQ1deeaVeeOEFSVKTJk20c+dOPffcc159b5566in3/69fv74ee+wxLVy40CPc8vLyNG/ePNWuXVuS9NJLL+m2227TCy+8oKioKI0ZM0YvvPCC+3sSFxen7777Tq+++irhVlG4ZFC4nfmf3Nxcj4eDg4MVHBx8yZefPdN99r+L1NRUFRYWuv/bkaT4+HjVrVtXmzdvpmiDZZFrF0auQZLhueZvKNpgKh988IHCwsJUWFgop9Opv/71rxo7dqz7+ebNm7uDTZJ27NihvXv3Fuvbz8vL0759+5STk6OMjAy1a9fO/VxgYKDatm1brJXkrO3bt6tSpUq68cYbSzzuvXv36tSpU+rcubPH4wUFBbr66qslSbt27fIYhySv7u9x1ttvv61p06Zp3759OnHihE6fPi273e6xT926dd3BdvZ9nE6ndu/erfDwcO3bt0/9+/fX/fff797n9OnTcjgcXo8H5hAbG+vx9ZgxYzz+2zsfp9OpoUOHqn379mrWrJkkKTMzU0FBQe4//M6KjIx0L6MMWAm5dmnkGqyAog2m0rFjR82YMUNBQUGKiYlRYKDnj3jVqlU9vj5x4oTatGnjbo84V82aNS9rDGfbQrxx4sQJSdKKFSs8QkVSiWYrSmrz5s1KSUnRuHHj1LVrVzkcDi1cuNB9ltObsf7nP/8pFraVKlUybKwoYwa3kaSlpXn8kVSSn9uBAwfqm2++0caNG0s/DsCkyLWLI9fgRnskUHFUrVpVDRs2LPH+rVu31ttvv61atWoVOyt3VnR0tLZu3aoOHTpIOnPmLTU1Va1btz7v/s2bN5fT6dT69es9WrzOOntGtKioyP1Y06ZNFRwcrEOHDl3wTGZCQoL74vOztmzZcukPeY7PPvtM9erV0z//+U/3YwcPHiy236FDh5Senq6YmBj3+wQEBKhJkyaKjIxUTEyMfvzxR6WkpHj1/vAjTqckA25C6jxzDLvdfsH/hs5n0KBB+uCDD/Tpp5+qTp067sejoqJUUFCg7Oxsj9m2rKwsr5dHBsyAXLs4cg1uBueav2H1SFhaSkqKrrjiCnXv3l0bNmzQ/v37tW7dOj3yyCM6fPiwJGnIkCGaNGmSli1bpu+//14PP/zwRe9FU79+ffXp00f33Xefli1b5j7mokWLJEn16tWTzWbTBx98oJ9++kknTpxQeHi4HnvsMQ0bNkxz587Vvn379OWXX+qll17S3LlzJUkPPvig9uzZo8cff1y7d+/WggULNGfOHK8+b6NGjXTo0CEtXLhQ+/bt07Rp07R06dJi+4WEhKhPnz7asWOHNmzYoEceeUR33XWX+4/mcePGaeLEiZo2bZp++OEH7dy5U7Nnz9aLL77o1XhgPS6XS4MGDdLSpUv18ccfKy4uzuP5Nm3aqHLlylq7dq37sd27d+vQoUOX1TYFWA25Rq7BnCjaYGlVqlTRp59+qrp166pnz55KSEhQ//79lZeX5z5D+eijj+rvf/+7+vTpo8TERIWHh+vOO++86HFnzJihv/zlL3r44YcVHx+v+++/372kee3atTVu3Dg98cQTioyM1KBBgyRJTz/9tEaNGqWJEycqISFB3bp104oVK9x/1NatW1dLlizRsmXL1LJlS82cOVPPPvusV5/3jjvu0LBhwzRo0CC1atVKn332mUaNGlVsv4YNG6pnz5669dZb1aVLF7Vo0cJj6eMBAwbotdde0+zZs9W8eXPdeOONmjNnTrE/wOHHfHQT0oEDB+rNN9/UggULFB4erszMTGVmZuq3336TJDkcDvXv31/Dhw/XJ598otTUVPXr10+JiYksQgKUALlGrlmWj3KtvNhcF7rqFABgOrm5uXI4HEqq2V+BAUGXfsElnHYW6KOfZiknJ6dE7ZFnV7P7o9mzZ7vv7ZSXl6dHH31Ub731lvLz89W1a1e98sortEcCAIrxda6VF65pAwAr8tEF2yU5TxgSEqLp06dr+vTplzsqAIDVsBAJAMB0nC4ZcjMap3+GGwDAYkyea1zTBgAAAAB+jJk2ALAgl8spl6v0yxobcQwAAErL7LlG0QYAVuRyGdMC4qe9/wAAizF5rtEeCQAAAAB+jJk2ALAil0EXbPvpGUkAgMWYPNco2gDAipxOyWZA376f9v4DACzG5LlGeyQAAAAA+DFm2gDAikzeRgIAsBiT5xozbQAAAADgx5hpAwALcjmdchnQ+++v97MBAFiL2XONog0ArMjkbSQAAIsxea7RHgkAAAAAfoyZNgCwIqdLspn3jCQAwGJMnmsUbQBgRS6XJCPuZ+Of4QYAsBiT5xrtkQAAAADgx5hpAwALcjldchnQRuLy0zOSAABrMXuuUbQBgBW5nDKmjcQ/l0YGAFiMyXON9kgAAAAA8GPMtAGABZm9jQQAYC1mzzWKNgCwIpO3kQAALMbkuUbRBgAWdFqFkgEnE0+rsPQHAQCglMyeaxRtAGAhQUFBioqK0sbMDw07ZlRUlIKCggw7HgAAJWWVXLO5/LVxEwBQJvLy8lRQUGDY8YKCghQSEmLY8QAA8IYVco2iDQAAAAD8GEv+AwAAAIAfo2gDAAAAAD9G0QYAAAAAfoyiDQAAAAD8GEUbAAAAAPgxijYAAAAA8GMUbQAAAADgx/4/zRdFxgrMxEcAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(1, 2, figsize=(10, 4), sharex=False, sharey=False\n", ")\n", "\n", "for index in range(0, len(optimized_metrics)):\n", " c_matrix = optimized_metrics.iloc[index][\"Confusion_matrix\"]\n", " disp = ConfusionMatrixDisplay(\n", " confusion_matrix=c_matrix, display_labels=[\"no water\", \"water\"]\n", " ).plot(ax=ax.flat[index])\n", "\n", "plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.3)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.2" } }, "nbformat": 4, "nbformat_minor": 2 }