diff --git "a/Random_forest.py/Random_forest_ver3.ipynb" "b/Random_forest.py/Random_forest_ver3.ipynb" new file mode 100644--- /dev/null +++ "b/Random_forest.py/Random_forest_ver3.ipynb" @@ -0,0 +1,3819 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "7ec041c8", + "metadata": { + "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", + "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5", + "execution": { + "iopub.execute_input": "2023-07-24T16:44:11.827497Z", + "iopub.status.busy": "2023-07-24T16:44:11.827091Z", + "iopub.status.idle": "2023-07-24T16:44:11.842480Z", + "shell.execute_reply": "2023-07-24T16:44:11.841069Z" + }, + "papermill": { + "duration": 0.038107, + "end_time": "2023-07-24T16:44:11.844975", + "exception": false, + "start_time": "2023-07-24T16:44:11.806868", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/kaggle/input/icr-identify-age-related-conditions/sample_submission.csv\n", + "/kaggle/input/icr-identify-age-related-conditions/greeks.csv\n", + "/kaggle/input/icr-identify-age-related-conditions/train.csv\n", + "/kaggle/input/icr-identify-age-related-conditions/test.csv\n" + ] + } + ], + "source": [ + "# This Python 3 environment comes with many helpful analytics libraries installed\n", + "# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n", + "# For example, here's several helpful packages to load\n", + "\n", + "import numpy as np # linear algebra\n", + "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", + "\n", + "# Input data files are available in the read-only \"../input/\" directory\n", + "# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n", + "\n", + "import os\n", + "for dirname, _, filenames in os.walk('/kaggle/input'):\n", + " for filename in filenames:\n", + " print(os.path.join(dirname, filename))\n", + "\n", + "# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n", + "# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bf665cc3", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:11.884566Z", + "iopub.status.busy": "2023-07-24T16:44:11.883586Z", + "iopub.status.idle": "2023-07-24T16:44:14.200337Z", + "shell.execute_reply": "2023-07-24T16:44:14.199061Z" + }, + "papermill": { + "duration": 2.340334, + "end_time": "2023-07-24T16:44:14.203977", + "exception": false, + "start_time": "2023-07-24T16:44:11.863643", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n", + " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n" + ] + } + ], + "source": [ + "from fastai.imports import *\n", + "import os\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "pd.set_option('display.max_rows', None)\n", + "\n", + "%matplotlib inline\n", + "import seaborn as sns\n", + "from numpy import random\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_absolute_error\n", + "from sklearn.tree import DecisionTreeClassifier, export_graphviz\n", + "import graphviz\n", + "from sklearn.ensemble import RandomForestClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c3b90dfc", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:14.245013Z", + "iopub.status.busy": "2023-07-24T16:44:14.243722Z", + "iopub.status.idle": "2023-07-24T16:44:14.311313Z", + "shell.execute_reply": "2023-07-24T16:44:14.309839Z" + }, + "papermill": { + "duration": 0.091846, + "end_time": "2023-07-24T16:44:14.315134", + "exception": false, + "start_time": "2023-07-24T16:44:14.223288", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "train_df = pd.read_csv(\"/kaggle/input/icr-identify-age-related-conditions/train.csv\")\n", + "test_df = pd.read_csv(\"/kaggle/input/icr-identify-age-related-conditions/test.csv\")\n", + "greeks_df = pd.read_csv(\"/kaggle/input/icr-identify-age-related-conditions/greeks.csv\")\n", + "sample_submission_df = pd.read_csv(\"/kaggle/input/icr-identify-age-related-conditions/sample_submission.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ee096853", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:14.353515Z", + "iopub.status.busy": "2023-07-24T16:44:14.353113Z", + "iopub.status.idle": "2023-07-24T16:44:14.424332Z", + "shell.execute_reply": "2023-07-24T16:44:14.423047Z" + }, + "papermill": { + "duration": 0.09367, + "end_time": "2023-07-24T16:44:14.427193", + "exception": false, + "start_time": "2023-07-24T16:44:14.333523", + "status": "completed" + }, + "tags": [] + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdABAFAHAMARAXAYAZBCBDBNBPBQBRBZCBCCCDCFCHCLCRCSCUCWDADEDFDHDIDLDNDUDVDYEBEEEGEHEJELEPEUFCFDFEFIFLFRFSGBGEGFGHGIGLClass
0000ff2bfdfe90.2093773109.0332985.20014722.3944078.1386880.6998610.0255789.8122145.5556344126.5873122.5984175.638726152.707705823.928241257.43237747.2233580.56348123.3876004.8519150.0234821.0502250.06922513.7841111.30201236.20595669.08340295.5705750.238680.28423289.24556084.3166429.6571045.3106901.7430723.1877047.2941761.9872831433.1667500.949104B30.87942078.5269683.82838413.39464010.2650739028.2919213.5834507.2981621.738550.09482211.33913872.6110632003.81031922.13622969.8349440.1203431
1007255e476980.145282978.7641685.20014736.9688898.1386883.6321900.02557813.5177901.2299005496.9282419.4205155.86803014.75472051.216883257.43237730.2843450.48471050.6282086.0850410.0314421.1138751.11780028.3109531.35718237.47656870.79836178.5531000.238680.363489110.58181575.7454837.5320000.0055181.7430717.2223284.9263960.8586031111.2871500.003042A109.12515995.41508652.26048017.1759840.2968506785.00347410.3589270.1732290.497060.5689329.29269872.61106327981.56275029.13543032.13199621.9780000
2013f2bd269f50.4700302635.1065485.20014732.3605538.1386886.7328400.02557812.8245701.2299005135.7802426.4825128.988531219.320160482.141594257.43237732.5637130.49585285.9553765.3764880.0362181.0502250.70035039.3647431.00961121.45964470.81970321.4266250.238680.210441120.05643865.4698428.0534641.2897391.7430736.8613527.8136748.1466511494.0764880.377208B109.12515978.5269685.390628224.2074248.7452018338.90618111.6269177.7095600.975561.19882137.07777288.60943713676.95781028.02285135.1926760.1969410
3043ac50845d50.2521073819.65177120.20161877.1122038.1386883.6853440.02557811.0537081.2299004169.6773823.6577237.28226411.050410661.518640257.43237715.2019140.71788288.1593602.3476520.0290541.4003000.63607541.1169600.72272721.53039247.27586196.6079850.238680.292431139.82457071.5712024.3548562.6553451.7430752.0038847.3860603.81332615691.5521800.614484B31.67435778.52696831.32337259.3019847.88433610965.76604014.8520226.1221620.497060.28446618.52958482.4168032094.26245239.94865690.4932480.1558290
4044fb8a146ec0.3802973733.0484485.20014714.1037388.1386883.9422550.0548103.396778102.1519805728.7341224.0108324.546318149.7171656074.859475257.43237782.2134950.53646772.64426430.5377220.0254721.0502250.69315031.7247260.82755034.41536074.06532200.1781600.238680.20770897.92012052.8388826.0199121.1449021.743079.0648567.3507203.4908461403.6563000.164268B109.12515991.99482551.14133629.1026404.27464016198.04959013.6667278.15305848.501340.12191416.408728146.1099438524.37050245.38131636.2626280.0966141
\n", + "
" + ], + "text/plain": [ + " Id AB AF AH AM AR \\\n", + "0 000ff2bfdfe9 0.209377 3109.03329 85.200147 22.394407 8.138688 \n", + "1 007255e47698 0.145282 978.76416 85.200147 36.968889 8.138688 \n", + "2 013f2bd269f5 0.470030 2635.10654 85.200147 32.360553 8.138688 \n", + "3 043ac50845d5 0.252107 3819.65177 120.201618 77.112203 8.138688 \n", + "4 044fb8a146ec 0.380297 3733.04844 85.200147 14.103738 8.138688 \n", + "\n", + " AX AY AZ BC BD BN BP \\\n", + "0 0.699861 0.025578 9.812214 5.555634 4126.58731 22.5984 175.638726 \n", + "1 3.632190 0.025578 13.517790 1.229900 5496.92824 19.4205 155.868030 \n", + "2 6.732840 0.025578 12.824570 1.229900 5135.78024 26.4825 128.988531 \n", + "3 3.685344 0.025578 11.053708 1.229900 4169.67738 23.6577 237.282264 \n", + "4 3.942255 0.054810 3.396778 102.151980 5728.73412 24.0108 324.546318 \n", + "\n", + " BQ BR BZ CB CC CD \\\n", + "0 152.707705 823.928241 257.432377 47.223358 0.563481 23.387600 \n", + "1 14.754720 51.216883 257.432377 30.284345 0.484710 50.628208 \n", + "2 219.320160 482.141594 257.432377 32.563713 0.495852 85.955376 \n", + "3 11.050410 661.518640 257.432377 15.201914 0.717882 88.159360 \n", + "4 149.717165 6074.859475 257.432377 82.213495 0.536467 72.644264 \n", + "\n", + " CF CH CL CR CS CU CW \\\n", + "0 4.851915 0.023482 1.050225 0.069225 13.784111 1.302012 36.205956 \n", + "1 6.085041 0.031442 1.113875 1.117800 28.310953 1.357182 37.476568 \n", + "2 5.376488 0.036218 1.050225 0.700350 39.364743 1.009611 21.459644 \n", + "3 2.347652 0.029054 1.400300 0.636075 41.116960 0.722727 21.530392 \n", + "4 30.537722 0.025472 1.050225 0.693150 31.724726 0.827550 34.415360 \n", + "\n", + " DA DE DF DH DI DL DN \\\n", + "0 69.08340 295.570575 0.23868 0.284232 89.245560 84.31664 29.657104 \n", + "1 70.79836 178.553100 0.23868 0.363489 110.581815 75.74548 37.532000 \n", + "2 70.81970 321.426625 0.23868 0.210441 120.056438 65.46984 28.053464 \n", + "3 47.27586 196.607985 0.23868 0.292431 139.824570 71.57120 24.354856 \n", + "4 74.06532 200.178160 0.23868 0.207708 97.920120 52.83888 26.019912 \n", + "\n", + " DU DV DY EB EE EG EH \\\n", + "0 5.310690 1.74307 23.187704 7.294176 1.987283 1433.166750 0.949104 \n", + "1 0.005518 1.74307 17.222328 4.926396 0.858603 1111.287150 0.003042 \n", + "2 1.289739 1.74307 36.861352 7.813674 8.146651 1494.076488 0.377208 \n", + "3 2.655345 1.74307 52.003884 7.386060 3.813326 15691.552180 0.614484 \n", + "4 1.144902 1.74307 9.064856 7.350720 3.490846 1403.656300 0.164268 \n", + "\n", + " EJ EL EP EU FC FD FE \\\n", + "0 B 30.879420 78.526968 3.828384 13.394640 10.265073 9028.291921 \n", + "1 A 109.125159 95.415086 52.260480 17.175984 0.296850 6785.003474 \n", + "2 B 109.125159 78.526968 5.390628 224.207424 8.745201 8338.906181 \n", + "3 B 31.674357 78.526968 31.323372 59.301984 7.884336 10965.766040 \n", + "4 B 109.125159 91.994825 51.141336 29.102640 4.274640 16198.049590 \n", + "\n", + " FI FL FR FS GB GE \\\n", + "0 3.583450 7.298162 1.73855 0.094822 11.339138 72.611063 \n", + "1 10.358927 0.173229 0.49706 0.568932 9.292698 72.611063 \n", + "2 11.626917 7.709560 0.97556 1.198821 37.077772 88.609437 \n", + "3 14.852022 6.122162 0.49706 0.284466 18.529584 82.416803 \n", + "4 13.666727 8.153058 48.50134 0.121914 16.408728 146.109943 \n", + "\n", + " GF GH GI GL Class \n", + "0 2003.810319 22.136229 69.834944 0.120343 1 \n", + "1 27981.562750 29.135430 32.131996 21.978000 0 \n", + "2 13676.957810 28.022851 35.192676 0.196941 0 \n", + "3 2094.262452 39.948656 90.493248 0.155829 0 \n", + "4 8524.370502 45.381316 36.262628 0.096614 1 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0f8cad4e", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:14.468316Z", + "iopub.status.busy": "2023-07-24T16:44:14.466605Z", + "iopub.status.idle": "2023-07-24T16:44:14.670578Z", + "shell.execute_reply": "2023-07-24T16:44:14.669435Z" + }, + "papermill": { + "duration": 0.227361, + "end_time": "2023-07-24T16:44:14.673619", + "exception": false, + "start_time": "2023-07-24T16:44:14.446258", + "status": "completed" + }, + "tags": [] + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ABAFAHAMARAXAYAZBCBDBNBPBQBRBZCBCCCDCFCHCLCRCSCUCWDADEDFDHDIDLDNDUDVDYEBEEEGEHELEPEUFCFDFEFIFLFRFSGBGEGFGHGIGLClass
count617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000557.000000617.000000617.000000615.000000614.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000617.000000616.000000617.000000617.000000617.000000617.000000617.000000617.000000557.000000617.000000617.000000616.000000617.000000617.000000617.000000616.000000617.000000615.000000617.000000617.000000617.000000617.000000617.000000616.000000617.000000
mean0.4771493502.013221118.62451338.96855210.1282425.5455760.06032010.5664478.0530125350.38865521.419492231.32222398.3287371218.133238550.63252577.1041510.68880190.25173511.2410640.0306151.4037610.74226236.9175901.38379227.16565351.128326401.9012990.6338840.367002146.97209994.79537726.3705681.8029001.92483026.3889899.0727003.0647781731.2482150.30510769.582596105.06071269.11700571.3415266.93008610306.81073710.1110795.4331993.5339050.42150120.724856131.71498714679.59539831.48971650.5844378.5309610.175041
std0.4683882300.322717127.83895069.72822610.5188772.5516960.4168174.35064565.1669433021.3266413.478278183.99250596.4793717575.2937072076.371275159.0493020.26399451.58513013.5711330.0148081.9222100.28119517.2663470.53871714.64599321.210888317.7456231.9123840.11298986.08441928.2431878.0388259.0347211.48455518.1166796.2002812.0583441790.2274761.84749938.55570768.445620390.187057165.55154564.75426211331.2940512.93402511.49625750.1819481.3053659.991907144.18152419352.9593879.86423936.26625110.3270100.380310
min0.081187192.59328085.2001473.1775228.1386880.6998610.0255783.3967781.2299001693.6243209.88680072.9489511.33115551.216883257.43237712.4997600.17687423.3876000.5108880.0031841.0502250.06922513.7841110.1379257.0306406.90640035.9988950.2386800.04099560.23247010.3456006.3394960.0055181.7430700.8040684.9263960.286201185.5941000.0030425.39467578.5269683.8283847.5341280.2968501563.1366883.5834500.1732290.4970600.0677304.10218272.61106313.0388949.4327350.8976280.0011290.000000
25%0.2521072197.34548085.20014712.2703148.1386884.1282940.0255788.1295801.2299004155.70287019.420500156.84723927.834425424.990642257.43237723.3175670.56368864.7241925.0663060.0234821.0502250.58957529.7824671.0702987.03064037.942520188.8156900.2386800.295164102.70355378.23224020.8882640.0055181.74307014.7157925.9653921.6486791111.1606250.00304230.92746878.5269684.32465625.8153840.2968505164.6662608.5230980.1732290.4970600.06773014.03671872.6110632798.99258425.03488823.0116840.1243920.000000
50%0.3546593120.31896085.20014720.5331108.1386885.0319120.02557810.4613201.2299004997.96073021.186000193.90881661.642115627.417402257.43237742.5543300.65871579.8191049.1230000.0278601.0502250.73080034.8351301.35166536.01910449.180940307.5095950.2386800.358023130.05063096.26496025.2488000.2517411.74307021.6424568.1494042.6161191493.8174130.08517671.94930678.52696822.64114436.3940081.8701557345.1434249.9454523.0281411.1310000.25060118.77143672.6110637838.27361030.60894641.0079680.3378270.000000
75%0.5597634361.637390113.73954039.1398868.1386886.4316340.03684512.9695165.0812446035.88570023.657700247.803462134.009015975.649259257.43237777.3100970.77220699.81352013.5659010.0344271.2284450.85935040.5294011.66061737.93583261.408760507.8962000.2386800.426348165.836955110.64068030.5442241.0586901.74307034.05834410.5030483.9100701905.7014750.237276109.125159112.76665449.08535256.7144484.88021410647.95165011.5166576.2388141.5120600.53506725.608406127.59167119035.70924036.86394767.93166421.9780000.000000
max6.16166628688.1876601910.123198630.518230178.94363438.27088010.31585138.9715681463.69344853060.59924029.3073002447.810550344.644105179250.25290050092.4593002271.4361674.103032633.534408200.9675260.22407431.6881533.039675267.9428234.95150764.521624210.3309202103.40519037.8950131.0604041049.168078326.23620062.808096161.35531525.192930152.35516494.95858018.32492630243.75878042.569748109.1251591063.5945786501.2644803030.6558241578.654237143224.68230035.851039137.9327391244.22702031.365763135.7812941497.351958143790.07120081.210825191.19476421.9780001.000000
\n", + "
" + ], + "text/plain": [ + " AB AF AH AM AR \\\n", + "count 617.000000 617.000000 617.000000 617.000000 617.000000 \n", + "mean 0.477149 3502.013221 118.624513 38.968552 10.128242 \n", + "std 0.468388 2300.322717 127.838950 69.728226 10.518877 \n", + "min 0.081187 192.593280 85.200147 3.177522 8.138688 \n", + "25% 0.252107 2197.345480 85.200147 12.270314 8.138688 \n", + "50% 0.354659 3120.318960 85.200147 20.533110 8.138688 \n", + "75% 0.559763 4361.637390 113.739540 39.139886 8.138688 \n", + "max 6.161666 28688.187660 1910.123198 630.518230 178.943634 \n", + "\n", + " AX AY AZ BC BD \\\n", + "count 617.000000 617.000000 617.000000 617.000000 617.000000 \n", + "mean 5.545576 0.060320 10.566447 8.053012 5350.388655 \n", + "std 2.551696 0.416817 4.350645 65.166943 3021.326641 \n", + "min 0.699861 0.025578 3.396778 1.229900 1693.624320 \n", + "25% 4.128294 0.025578 8.129580 1.229900 4155.702870 \n", + "50% 5.031912 0.025578 10.461320 1.229900 4997.960730 \n", + "75% 6.431634 0.036845 12.969516 5.081244 6035.885700 \n", + "max 38.270880 10.315851 38.971568 1463.693448 53060.599240 \n", + "\n", + " BN BP BQ BR BZ \\\n", + "count 617.000000 617.000000 557.000000 617.000000 617.000000 \n", + "mean 21.419492 231.322223 98.328737 1218.133238 550.632525 \n", + "std 3.478278 183.992505 96.479371 7575.293707 2076.371275 \n", + "min 9.886800 72.948951 1.331155 51.216883 257.432377 \n", + "25% 19.420500 156.847239 27.834425 424.990642 257.432377 \n", + "50% 21.186000 193.908816 61.642115 627.417402 257.432377 \n", + "75% 23.657700 247.803462 134.009015 975.649259 257.432377 \n", + "max 29.307300 2447.810550 344.644105 179250.252900 50092.459300 \n", + "\n", + " CB CC CD CF CH \\\n", + "count 615.000000 614.000000 617.000000 617.000000 617.000000 \n", + "mean 77.104151 0.688801 90.251735 11.241064 0.030615 \n", + "std 159.049302 0.263994 51.585130 13.571133 0.014808 \n", + "min 12.499760 0.176874 23.387600 0.510888 0.003184 \n", + "25% 23.317567 0.563688 64.724192 5.066306 0.023482 \n", + "50% 42.554330 0.658715 79.819104 9.123000 0.027860 \n", + "75% 77.310097 0.772206 99.813520 13.565901 0.034427 \n", + "max 2271.436167 4.103032 633.534408 200.967526 0.224074 \n", + "\n", + " CL CR CS CU CW DA \\\n", + "count 617.000000 617.000000 617.000000 617.000000 617.000000 617.000000 \n", + "mean 1.403761 0.742262 36.917590 1.383792 27.165653 51.128326 \n", + "std 1.922210 0.281195 17.266347 0.538717 14.645993 21.210888 \n", + "min 1.050225 0.069225 13.784111 0.137925 7.030640 6.906400 \n", + "25% 1.050225 0.589575 29.782467 1.070298 7.030640 37.942520 \n", + "50% 1.050225 0.730800 34.835130 1.351665 36.019104 49.180940 \n", + "75% 1.228445 0.859350 40.529401 1.660617 37.935832 61.408760 \n", + "max 31.688153 3.039675 267.942823 4.951507 64.521624 210.330920 \n", + "\n", + " DE DF DH DI DL \\\n", + "count 617.000000 617.000000 617.000000 617.000000 617.000000 \n", + "mean 401.901299 0.633884 0.367002 146.972099 94.795377 \n", + "std 317.745623 1.912384 0.112989 86.084419 28.243187 \n", + "min 35.998895 0.238680 0.040995 60.232470 10.345600 \n", + "25% 188.815690 0.238680 0.295164 102.703553 78.232240 \n", + "50% 307.509595 0.238680 0.358023 130.050630 96.264960 \n", + "75% 507.896200 0.238680 0.426348 165.836955 110.640680 \n", + "max 2103.405190 37.895013 1.060404 1049.168078 326.236200 \n", + "\n", + " DN DU DV DY EB EE \\\n", + "count 617.000000 616.000000 617.000000 617.000000 617.000000 617.000000 \n", + "mean 26.370568 1.802900 1.924830 26.388989 9.072700 3.064778 \n", + "std 8.038825 9.034721 1.484555 18.116679 6.200281 2.058344 \n", + "min 6.339496 0.005518 1.743070 0.804068 4.926396 0.286201 \n", + "25% 20.888264 0.005518 1.743070 14.715792 5.965392 1.648679 \n", + "50% 25.248800 0.251741 1.743070 21.642456 8.149404 2.616119 \n", + "75% 30.544224 1.058690 1.743070 34.058344 10.503048 3.910070 \n", + "max 62.808096 161.355315 25.192930 152.355164 94.958580 18.324926 \n", + "\n", + " EG EH EL EP EU \\\n", + "count 617.000000 617.000000 557.000000 617.000000 617.000000 \n", + "mean 1731.248215 0.305107 69.582596 105.060712 69.117005 \n", + "std 1790.227476 1.847499 38.555707 68.445620 390.187057 \n", + "min 185.594100 0.003042 5.394675 78.526968 3.828384 \n", + "25% 1111.160625 0.003042 30.927468 78.526968 4.324656 \n", + "50% 1493.817413 0.085176 71.949306 78.526968 22.641144 \n", + "75% 1905.701475 0.237276 109.125159 112.766654 49.085352 \n", + "max 30243.758780 42.569748 109.125159 1063.594578 6501.264480 \n", + "\n", + " FC FD FE FI FL \\\n", + "count 616.000000 617.000000 617.000000 617.000000 616.000000 \n", + "mean 71.341526 6.930086 10306.810737 10.111079 5.433199 \n", + "std 165.551545 64.754262 11331.294051 2.934025 11.496257 \n", + "min 7.534128 0.296850 1563.136688 3.583450 0.173229 \n", + "25% 25.815384 0.296850 5164.666260 8.523098 0.173229 \n", + "50% 36.394008 1.870155 7345.143424 9.945452 3.028141 \n", + "75% 56.714448 4.880214 10647.951650 11.516657 6.238814 \n", + "max 3030.655824 1578.654237 143224.682300 35.851039 137.932739 \n", + "\n", + " FR FS GB GE GF \\\n", + "count 617.000000 615.000000 617.000000 617.000000 617.000000 \n", + "mean 3.533905 0.421501 20.724856 131.714987 14679.595398 \n", + "std 50.181948 1.305365 9.991907 144.181524 19352.959387 \n", + "min 0.497060 0.067730 4.102182 72.611063 13.038894 \n", + "25% 0.497060 0.067730 14.036718 72.611063 2798.992584 \n", + "50% 1.131000 0.250601 18.771436 72.611063 7838.273610 \n", + "75% 1.512060 0.535067 25.608406 127.591671 19035.709240 \n", + "max 1244.227020 31.365763 135.781294 1497.351958 143790.071200 \n", + "\n", + " GH GI GL Class \n", + "count 617.000000 617.000000 616.000000 617.000000 \n", + "mean 31.489716 50.584437 8.530961 0.175041 \n", + "std 9.864239 36.266251 10.327010 0.380310 \n", + "min 9.432735 0.897628 0.001129 0.000000 \n", + "25% 25.034888 23.011684 0.124392 0.000000 \n", + "50% 30.608946 41.007968 0.337827 0.000000 \n", + "75% 36.863947 67.931664 21.978000 0.000000 \n", + "max 81.210825 191.194764 21.978000 1.000000 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9d4496a1", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:14.716229Z", + "iopub.status.busy": "2023-07-24T16:44:14.715836Z", + "iopub.status.idle": "2023-07-24T16:44:14.936888Z", + "shell.execute_reply": "2023-07-24T16:44:14.934929Z" + }, + "papermill": { + "duration": 0.247879, + "end_time": "2023-07-24T16:44:14.942040", + "exception": false, + "start_time": "2023-07-24T16:44:14.694161", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_df.Class.value_counts().plot.pie()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0224fd32", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.009821Z", + "iopub.status.busy": "2023-07-24T16:44:15.009423Z", + "iopub.status.idle": "2023-07-24T16:44:15.019078Z", + "shell.execute_reply": "2023-07-24T16:44:15.018230Z" + }, + "papermill": { + "duration": 0.034162, + "end_time": "2023-07-24T16:44:15.021361", + "exception": false, + "start_time": "2023-07-24T16:44:14.987199", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Id 0\n", + "AB 0\n", + "AF 0\n", + "AH 0\n", + "AM 0\n", + "AR 0\n", + "AX 0\n", + "AY 0\n", + "AZ 0\n", + "BC 0\n", + "BD 0\n", + "BN 0\n", + "BP 0\n", + "BQ 60\n", + "BR 0\n", + "BZ 0\n", + "CB 2\n", + "CC 3\n", + "CD 0\n", + "CF 0\n", + "CH 0\n", + "CL 0\n", + "CR 0\n", + "CS 0\n", + "CU 0\n", + "CW 0\n", + "DA 0\n", + "DE 0\n", + "DF 0\n", + "DH 0\n", + "DI 0\n", + "DL 0\n", + "DN 0\n", + "DU 1\n", + "DV 0\n", + "DY 0\n", + "EB 0\n", + "EE 0\n", + "EG 0\n", + "EH 0\n", + "EJ 0\n", + "EL 60\n", + "EP 0\n", + "EU 0\n", + "FC 1\n", + "FD 0\n", + "FE 0\n", + "FI 0\n", + "FL 1\n", + "FR 0\n", + "FS 2\n", + "GB 0\n", + "GE 0\n", + "GF 0\n", + "GH 0\n", + "GI 0\n", + "GL 1\n", + "Class 0\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df.isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fa6c03f8", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.065115Z", + "iopub.status.busy": "2023-07-24T16:44:15.064712Z", + "iopub.status.idle": "2023-07-24T16:44:15.088971Z", + "shell.execute_reply": "2023-07-24T16:44:15.086866Z" + }, + "papermill": { + "duration": 0.050126, + "end_time": "2023-07-24T16:44:15.092480", + "exception": false, + "start_time": "2023-07-24T16:44:15.042354", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 617 entries, 0 to 616\n", + "Data columns (total 58 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Id 617 non-null object \n", + " 1 AB 617 non-null float64\n", + " 2 AF 617 non-null float64\n", + " 3 AH 617 non-null float64\n", + " 4 AM 617 non-null float64\n", + " 5 AR 617 non-null float64\n", + " 6 AX 617 non-null float64\n", + " 7 AY 617 non-null float64\n", + " 8 AZ 617 non-null float64\n", + " 9 BC 617 non-null float64\n", + " 10 BD 617 non-null float64\n", + " 11 BN 617 non-null float64\n", + " 12 BP 617 non-null float64\n", + " 13 BQ 557 non-null float64\n", + " 14 BR 617 non-null float64\n", + " 15 BZ 617 non-null float64\n", + " 16 CB 615 non-null float64\n", + " 17 CC 614 non-null float64\n", + " 18 CD 617 non-null float64\n", + " 19 CF 617 non-null float64\n", + " 20 CH 617 non-null float64\n", + " 21 CL 617 non-null float64\n", + " 22 CR 617 non-null float64\n", + " 23 CS 617 non-null float64\n", + " 24 CU 617 non-null float64\n", + " 25 CW 617 non-null float64\n", + " 26 DA 617 non-null float64\n", + " 27 DE 617 non-null float64\n", + " 28 DF 617 non-null float64\n", + " 29 DH 617 non-null float64\n", + " 30 DI 617 non-null float64\n", + " 31 DL 617 non-null float64\n", + " 32 DN 617 non-null float64\n", + " 33 DU 616 non-null float64\n", + " 34 DV 617 non-null float64\n", + " 35 DY 617 non-null float64\n", + " 36 EB 617 non-null float64\n", + " 37 EE 617 non-null float64\n", + " 38 EG 617 non-null float64\n", + " 39 EH 617 non-null float64\n", + " 40 EJ 617 non-null object \n", + " 41 EL 557 non-null float64\n", + " 42 EP 617 non-null float64\n", + " 43 EU 617 non-null float64\n", + " 44 FC 616 non-null float64\n", + " 45 FD 617 non-null float64\n", + " 46 FE 617 non-null float64\n", + " 47 FI 617 non-null float64\n", + " 48 FL 616 non-null float64\n", + " 49 FR 617 non-null float64\n", + " 50 FS 615 non-null float64\n", + " 51 GB 617 non-null float64\n", + " 52 GE 617 non-null float64\n", + " 53 GF 617 non-null float64\n", + " 54 GH 617 non-null float64\n", + " 55 GI 617 non-null float64\n", + " 56 GL 616 non-null float64\n", + " 57 Class 617 non-null int64 \n", + "dtypes: float64(55), int64(1), object(2)\n", + "memory usage: 279.7+ KB\n" + ] + } + ], + "source": [ + "train_df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "57aa29b6", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.136436Z", + "iopub.status.busy": "2023-07-24T16:44:15.135977Z", + "iopub.status.idle": "2023-07-24T16:44:15.175777Z", + "shell.execute_reply": "2023-07-24T16:44:15.174551Z" + }, + "papermill": { + "duration": 0.065128, + "end_time": "2023-07-24T16:44:15.178796", + "exception": false, + "start_time": "2023-07-24T16:44:15.113668", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "modes = train_df.mode().iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "236e131c", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.228183Z", + "iopub.status.busy": "2023-07-24T16:44:15.227729Z", + "iopub.status.idle": "2023-07-24T16:44:15.295632Z", + "shell.execute_reply": "2023-07-24T16:44:15.294176Z" + }, + "papermill": { + "duration": 0.094191, + "end_time": "2023-07-24T16:44:15.298576", + "exception": false, + "start_time": "2023-07-24T16:44:15.204385", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def process_data(df):\n", + " df.fillna(modes, inplace=True)\n", + " df[\"EJ\"] = pd.Categorical(df.EJ)\n", + " \n", + "process_data(train_df)\n", + "process_data(test_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4d7d57b7", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.342144Z", + "iopub.status.busy": "2023-07-24T16:44:15.341506Z", + "iopub.status.idle": "2023-07-24T16:44:15.361922Z", + "shell.execute_reply": "2023-07-24T16:44:15.360200Z" + }, + "papermill": { + "duration": 0.046219, + "end_time": "2023-07-24T16:44:15.365510", + "exception": false, + "start_time": "2023-07-24T16:44:15.319291", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 617 entries, 0 to 616\n", + "Data columns (total 58 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Id 617 non-null object \n", + " 1 AB 617 non-null float64 \n", + " 2 AF 617 non-null float64 \n", + " 3 AH 617 non-null float64 \n", + " 4 AM 617 non-null float64 \n", + " 5 AR 617 non-null float64 \n", + " 6 AX 617 non-null float64 \n", + " 7 AY 617 non-null float64 \n", + " 8 AZ 617 non-null float64 \n", + " 9 BC 617 non-null float64 \n", + " 10 BD 617 non-null float64 \n", + " 11 BN 617 non-null float64 \n", + " 12 BP 617 non-null float64 \n", + " 13 BQ 617 non-null float64 \n", + " 14 BR 617 non-null float64 \n", + " 15 BZ 617 non-null float64 \n", + " 16 CB 617 non-null float64 \n", + " 17 CC 617 non-null float64 \n", + " 18 CD 617 non-null float64 \n", + " 19 CF 617 non-null float64 \n", + " 20 CH 617 non-null float64 \n", + " 21 CL 617 non-null float64 \n", + " 22 CR 617 non-null float64 \n", + " 23 CS 617 non-null float64 \n", + " 24 CU 617 non-null float64 \n", + " 25 CW 617 non-null float64 \n", + " 26 DA 617 non-null float64 \n", + " 27 DE 617 non-null float64 \n", + " 28 DF 617 non-null float64 \n", + " 29 DH 617 non-null float64 \n", + " 30 DI 617 non-null float64 \n", + " 31 DL 617 non-null float64 \n", + " 32 DN 617 non-null float64 \n", + " 33 DU 617 non-null float64 \n", + " 34 DV 617 non-null float64 \n", + " 35 DY 617 non-null float64 \n", + " 36 EB 617 non-null float64 \n", + " 37 EE 617 non-null float64 \n", + " 38 EG 617 non-null float64 \n", + " 39 EH 617 non-null float64 \n", + " 40 EJ 617 non-null category\n", + " 41 EL 617 non-null float64 \n", + " 42 EP 617 non-null float64 \n", + " 43 EU 617 non-null float64 \n", + " 44 FC 617 non-null float64 \n", + " 45 FD 617 non-null float64 \n", + " 46 FE 617 non-null float64 \n", + " 47 FI 617 non-null float64 \n", + " 48 FL 617 non-null float64 \n", + " 49 FR 617 non-null float64 \n", + " 50 FS 617 non-null float64 \n", + " 51 GB 617 non-null float64 \n", + " 52 GE 617 non-null float64 \n", + " 53 GF 617 non-null float64 \n", + " 54 GH 617 non-null float64 \n", + " 55 GI 617 non-null float64 \n", + " 56 GL 617 non-null float64 \n", + " 57 Class 617 non-null int64 \n", + "dtypes: category(1), float64(55), int64(1), object(1)\n", + "memory usage: 275.6+ KB\n" + ] + } + ], + "source": [ + "train_df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "88337216", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.416908Z", + "iopub.status.busy": "2023-07-24T16:44:15.416024Z", + "iopub.status.idle": "2023-07-24T16:44:15.427154Z", + "shell.execute_reply": "2023-07-24T16:44:15.425966Z" + }, + "papermill": { + "duration": 0.040073, + "end_time": "2023-07-24T16:44:15.430393", + "exception": false, + "start_time": "2023-07-24T16:44:15.390320", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0 B\n", + " 1 A\n", + " 2 B\n", + " 3 B\n", + " 4 B\n", + " Name: EJ, dtype: category\n", + " Categories (2, object): ['A', 'B'],\n", + " 0 1\n", + " 1 0\n", + " 2 1\n", + " 3 1\n", + " 4 1\n", + " dtype: int8)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df.EJ.head(), train_df.EJ.cat.codes.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "14fb9aa1", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.484517Z", + "iopub.status.busy": "2023-07-24T16:44:15.483724Z", + "iopub.status.idle": "2023-07-24T16:44:15.489773Z", + "shell.execute_reply": "2023-07-24T16:44:15.488952Z" + }, + "papermill": { + "duration": 0.031671, + "end_time": "2023-07-24T16:44:15.492329", + "exception": false, + "start_time": "2023-07-24T16:44:15.460658", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "categoricals = [\"EJ\"]\n", + "dependent = \"Class\"\n", + "conts = [column for column in train_df.columns if not column in categoricals + [dependent] + [\"Id\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c1a60f26", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:15.536967Z", + "iopub.status.busy": "2023-07-24T16:44:15.536243Z", + "iopub.status.idle": "2023-07-24T16:44:16.110589Z", + "shell.execute_reply": "2023-07-24T16:44:16.109397Z" + }, + "papermill": { + "duration": 0.599525, + "end_time": "2023-07-24T16:44:16.113242", + "exception": false, + "start_time": "2023-07-24T16:44:15.513717", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[Text(0.5, 1.0, 'Histogram')]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6QAAAHUCAYAAAAtAuU1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABTcUlEQVR4nO3de1xVVf7/8feRy4EUSUG5JJKV11AzLAQz7yiGltaoOWk2WpmXJHRs0CmxKRktFcNL2ahkplKZ1ZSZqHkbsEEStbtNllicUEMQI0Dcvz/8eb4dAQVCtsLr+Xjsx8Oz9trrfPbxsnyz91nbYhiGIQAAAAAAalg9swsAAAAAANRNBFIAAAAAgCkIpAAAAAAAUxBIAQAAAACmIJACAAAAAExBIAUAAAAAmIJACgAAAAAwBYEUAAAAAGAKAikAAAAAwBQEUlzREhMTZbFY7Juzs7OaNWumhx56SD/++ONleU+LxaLY2Fj76y+++EKxsbH6/vvvS/UdPXq0rr/++stSx8XExsY6fC7XXHONmjVrpn79+ikhIUGnTp26YmqtCT169FCPHj2qZazff64Wi0UNGzZUWFiY1q5dW+UxN27c6PBnCgBQdef/b7B3794y90dGRjrMd9dff71Gjx5dqfdISUlRbGysTp48WfVCAVQIgRRXhZUrVyo1NVXJycl6+OGHtXbtWnXr1k2nT5+u9vdKTU3V2LFj7a+/+OILzZo1q8xA+tRTT2nDhg3VXkNFbdq0Sampqdq0aZNeeOEFNW/eXNOmTdPNN9+s/fv3O/Q1u9bLacmSJVqyZEm1jXffffcpNTVVKSkpeumll5SXl6cRI0ZozZo1VRpv48aNmjVrVrXVBwCouA0bNuipp56q1DEpKSmaNWsWgRSoAc5mFwBURFBQkDp37ixJ6tmzp0pKSvSPf/xD77zzjv785z9X63t16dKlwn1vvPHGan3vygoODpa3t7f99fDhwzVx4kR1795dgwYN0jfffCOr1SrJ/Fovp3bt2lXreD4+PvY/B6Ghoeratauuv/56vfzyyxoxYkS1vhcA4PLq1KmT2SVUWnFxsf3OMKC24woprkrnw8IPP/wgSfrtt98UExOjFi1ayNXVVdddd50mTJhQ6ieb27ZtU48ePeTl5SV3d3c1b95c9957r3799Vd7n9/fspuYmKg//elPks4F4fO3cSYmJkoqfRtsp06d1K1bt1L1lpSU6LrrrtOQIUPsbUVFRXr22WfVpk0bWa1WNWnSRA899JCOHTv2hz6bjh07asaMGTpy5IiSkpLs7WXdsrt48WLdeeedatq0qerXr6/27dtr7ty5Ki4uduhnGIZmz56twMBAubm5qXPnzkpOTi51q+z27dtlsVi0du1azZgxQ/7+/mrYsKH69Omjr7/+ulStK1asUMeOHeXm5qbGjRtr8ODB+vLLLx36fPfddxo+fLj8/f1ltVrl4+Oj3r17KyMjw96nrFt2ly5dqo4dO6pBgwby8PBQmzZtNH369Mp9mP9fYGCgmjRpop9//tmhPSkpSeHh4fLz85O7u7vatm2rv/3tbw5X7kePHq3FixdLcrwd+PwVd8MwtGTJEt1yyy1yd3dXo0aNdN999+m7776rUq0AAEcX3rJ79uxZPfvss2rdurXc3d117bXXqkOHDlq4cKGkc1+L+etf/ypJatGihf3f7e3bt9uPnzt3rn3+btq0qUaNGqWjR486vG9l587XXntNU6ZM0XXXXSer1apvv/1Wx44d0/jx49WuXTs1aNBATZs2Va9evbRr1y6H9/r+++9lsVj0/PPPa86cObr++uvl7u6uHj166JtvvlFxcbH+9re/yd/fX56enho8eLCys7Or/8MGqoAfu+Cq9O2330qSmjRpIsMwdM8992jr1q2KiYlRt27ddODAAc2cOVOpqalKTU2V1WrV999/r7vuukvdunXTihUrdO211+rHH3/Upk2bVFRUpGuuuabU+9x1112aPXu2pk+frsWLF+vWW2+VVP7VxoceekiTJ0/WoUOH1LJlS3v75s2b9dNPP+mhhx6SdG4yu/vuu7Vr1y5NmzZNYWFh+uGHHzRz5kz16NFDe/fulbu7e5U/n0GDBmnatGnauXOnRo0aVW6///3vfxoxYoQ9yO/fv1/PPfecvvrqK61YscLeb8aMGYqLi9MjjzyiIUOGKDMzU2PHjlVxcbFatWpVatzp06era9eu+te//qW8vDw9+eSTGjhwoL788ks5OTlJkuLi4jR9+nTdf//9iouL04kTJxQbG6vQ0FClpaXZP78BAwaopKREc+fOVfPmzXX8+HGlpKRc9DaqdevWafz48Zo0aZJeeOEF1atXT99++62++OKLKn2eubm5+uWXX0pdPT906JAGDBigqKgo1a9fX199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C5cXLugjSTabrUrPNj0/ZlZWVql9P/30k8PKwYGBgVq+fLkk6ZtvvtEbb7yh2NhYFRUV6aWXXir3PR566CE99NBDOn36tHbu3KmZM2cqMjJS33zzjcP5lqVJkyb2P2+hoaFq27atunfvrieeeELvv/++pHMLZP3000/avn27/aqopEo9IsDb21sWi0W7du2yh/bfK6sNAPDHODs7Kzo6WtHR0Tp58qS2bNmi6dOnq1+/fsrMzCxzTYnzfj9/NWvWzGHf7+evqsydFoulVNvq1avVo0cPLV261KH9Yj+UBa42XCHFVa93796Szv2j/Xvr16/X6dOn7ft/z8nJSSEhIfargZ9++mm54194de9SnJycNHLkSL3zzjvatWuX9u7dq7/85S8OfSIjI3XixAmVlJSU+dPd1q1bV+i9yrJ//37Nnj1b119/falbhX7v/MT3+9BjGIZeeeUVh34hISGyWq0OK/ZK525HOn8ltrJCQ0Pl7u5e6vfs6NGj2rZtW5m/Z5LUqlUr/f3vf1f79u0v+nv2e/Xr11dERIRmzJihoqIiff7555Wut1u3bho1apQ++OAD+8JEZX1+kvTyyy+XOr68P0ORkZEyDEM//vhjmX8O2rdvX+laAQAVd+211+q+++7ThAkT9Msvv9hXQC/v3+1evXpJKv1/jrS0NH355Zf2+au65k6LxVJqnjlw4IDDInnA1Y4rpLjq9e3bV/369dOTTz6pvLw8de3a1b7KbqdOnTRy5EhJ576DsW3bNt11111q3ry5fvvtN/tKsn369Cl3/KCgIEnSsmXL5OHhITc3N7Vo0aLUbam/95e//EVz5szRiBEj5O7urmHDhjnsHz58uF5//XUNGDBAkydP1u233y4XFxcdPXpUH3/8se6++24NHjz4kueenp4uT09PFRcX66efftLWrVv12muvqWnTpvr3v/9tvyWnvM/N1dVV999/v6ZNm6bffvtNS5cuVU5OjkO/xo0bKzo6WnFxcWrUqJEGDx6so0ePatasWfLz83P4rkpFXXvttXrqqac0ffp0jRo1Svfff79OnDihWbNmyc3NTTNnzpR0btKdOHGi/vSnP6lly5ZydXXVtm3bdODAAf3tb38rd/yHH35Y7u7u6tq1q/z8/GSz2RQXFydPT0+HK+aV8Y9//ENJSUl66qmntGXLFoWFhalRo0YaN26cZs6cKRcXF73++uvav39/qWPPB8s5c+YoIiJCTk5O6tChg7p27apHHnlEDz30kPbu3as777xT9evXV1ZWlnbv3q327dvrscceq1K9AICyDRw40P588yZNmuiHH35QfHy8AgMD7Su8n/93e+HChXrwwQfl4uKi1q1bq3Xr1nrkkUeUkJCgevXqKSIiwr7KbkBAgJ544glJ1Td3RkZG6h//+Idmzpyp7t276+uvv9YzzzyjFi1alLnCMHBVMnVJJeASzq+kl5aWdtF+BQUFxpNPPmkEBgYaLi4uhp+fn/HYY48ZOTk59j6pqanG4MGDjcDAQMNqtRpeXl5G9+7djffee89hLF2wyq5hnFulrkWLFoaTk5MhyVi5cqVhGBdfuTYsLMyQZPz5z38uc39xcbHxwgsvGB07djTc3NyMBg0aGG3atDEeffRR49ChQxc93/Or7J7frFar4efnZ4SHhxsLFy408vLySh1TVq3//ve/7e9/3XXXGX/961+NDz/8sNSqwmfPnjWeffZZo1mzZoarq6vRoUMH4/333zc6duzosMrf+ZUC33zzTYf3Ob/63/nP7bx//etfRocOHQxXV1fD09PTuPvuu43PP//cvv/nn382Ro8ebbRp08aoX7++0aBBA6NDhw7GggULjDNnztj7XbjK7quvvmr07NnT8PHxMVxdXQ1/f39j6NChxoEDBy76uRrGud//CRMmlLnvr3/9qyHJ2LFjh2EYhpGSkmKEhoYa11xzjdGkSRNj7NixxqefflrqXAsLC42xY8caTZo0MSwWS6mVG1esWGGEhIQY9evXN9zd3Y0bb7zRGDVq1EVX9QWAuupS/ze46667LrrK7rx584ywsDDD29vbcHV1NZo3b26MGTPG+P777x3GiYmJMfz9/Y169eo5zIslJSXGnDlzjFatWhkuLi6Gt7e38cADDxiZmZkOx//RudMwzs0fU6dONa677jrDzc3NuPXWW4133nmn1Jx+fp59/vnnHY4vb+yK/v8KqAkWw6jgcpwA8DuHDx9WmzZtNHPmTE2fPt3scgAAuOIxdwKlEUgBXNL+/fu1du1ahYWFqWHDhvr66681d+5c5eXl6bPPPit3xUAAAOoq5k6gYvgOKYBLql+/vvbu3avly5fr5MmT8vT0VI8ePfTcc88xoQIAUAbmTqBiuEIKAAAAADAFj30BAAAAAJiCQAoA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = plt.subplots(1, 2, figsize=(11, 5))\n", + "sns.barplot(data=train_df, y=dependent, x=\"EJ\", ax=axs[0]).set(title=\"Positive Diagnosis Rate\")\n", + "sns.countplot(data=train_df, x=\"EJ\", ax=axs[1]).set(title=\"Histogram\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "9213fd64", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.159486Z", + "iopub.status.busy": "2023-07-24T16:44:16.158831Z", + "iopub.status.idle": "2023-07-24T16:44:16.677796Z", + "shell.execute_reply": "2023-07-24T16:44:16.676554Z" + }, + "papermill": { + "duration": 0.544704, + "end_time": "2023-07-24T16:44:16.680245", + "exception": false, + "start_time": "2023-07-24T16:44:16.135541", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Ho7SyY6jze5QWU2da19HAEDL2hwcr732Wn3wwQe6/vrr9fzzz+uaa65RaGio/vjHP3r85JMnT3a7/tRTTykrK0s7d+4kOAY45nahq0tNTdX48eP13nvvyW4/uQpkSEiIrrzySo0aNcq44uA3b7/9tv7xj39o3LhxRpfSadT4YaiqxRyqWItZ5VabiitqCY4A0AZtHqr67rvvaubMmXriiSd03XXXKTTUu7/Q6+vr9dprr6mystK1Kt3prFarysrK3C7wP+fcrlM/LEsn53bl5OQYVBngX7Nnz3bbz1aSwsLCdN999xlUEfytW7duSkxMNLqMTsUfcxylk8NVWVkVANqmzcHx/fffV3l5udLS0nTJJZfohRde0NGjRztcwN69exUTEyOLxaJZs2Zp48aNLQ57zczMVHx8vOuSkpLS4edH+zG3C2iQlJSkGTNmuB2bOXMmw7W7kN/+9rd67LHHVFVVZXQpnYZzqGqED4eqSqcskFNh9enzAEBn0ebgOGbMGL388ssqKCjQvffeq9dee019+/aV3W7X5s2bVV5e7lEB5557rnJzc7Vz507dd999uvPOO7Vv375mz50/f75KS0tdl/z8fI+eEx0zadIkt/08T8XcLnQ1U6dOdX2JlZKSwhYMXcyzzz6r7OxsJScn64ILLtCFF17odkH7new4+mYPR6fuMRZJrKwKAG3V7r0ToqKidM899+iee+7RV199pZUrV+qZZ57RI488oquvvlpvvvlmux4vPDzctThOWlqaPvnkE/3hD3/Qiy++2ORci8Uii8XS3pLhZcztAk4ym816+OGHtWDBAs2bN48tabqYG264wegSOh1/zHGUpKQYZ8eR4AgAbdGhTzjnnnuufv/73yszM1NvvfWWVq1a1eGCHA6HrFaGjQS62bNn68MPP3T7f8XcLnRVo0aN0htvvEFo7IIef/xxo0vodPyxqqp0cqjq8Uo+cwBAW3hlHEhoaKhuuOGGdncbf/Ob3+j999/X999/r71792rBggV67733dPvtt3ujLPgQc7sAd4TGrqukpEQrVqzQ/Pnzdfz4cUnSp59+qiNHjhhcWXByDlX15T6OktQ9umEEUzFDVQGgTQz9pPPjjz/qjjvuUEFBgeLj4zVixAi98847uvrqq40sC200depUvfXWW8rPz2duF4Au6bPPPtNVV12l+Ph4ff/99/rF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qamp+uKLL5SVlaXp06cbXJ130XFEuyUlJSk0NLTJt8JFRUVNvj0GAOB0vI8Evrlz5+rNN9/Utm3b1K9fP6PL8Vh4eLgGDx6stLQ0ZWZmauTIkfrDH/5gdFnttnv3bhUVFWn06NEym80ym83avn27nnvuOZnNZtXX1xtdYodER0frggsu0DfffGN0Ke3Wu3fvJl9EDB06NCgX+joTgiPaLTw8XKNHj9bmzZvdjm/evFljx441qCoAQLDgfSRwORwO3X///dqwYYO2bt2qQYMGGV2SVzkcDlmtVqPLaLcJEyZo7969ys3NdV3S0tJ0++23Kzc3V6GhoUaX2CFWq1X79+9X7969jS6l3caNG9dky5qvv/5aAwYMMKgi32GoKjySkZGhO+64Q2lpaRozZoxeeukl5eXladasWUaXBvhNRUWFvv32W9f1gwcPKjc3V4mJierfv7+BlQGBrzO9j3Sm3wVz5szRq6++qjfeeEOxsbGurnB8fLwiIyMNrq59fvOb3yg9PV0pKSkqLy/Xa6+9pvfee0/vvPOO0aW1W2xsbJN5ptHR0erevXtQzj+dN2+eJk+erP79+6uoqEhPPvmkysrKdOeddxpdWrs99NBDGjt2rJ5++mndcsst+vjjj/XSSy/ppZdeMro073MAHlq2bJljwIABjvDwcMeFF17o2L59u9ElAX61bds2h6QmlzvvvNPo0oCg0FneRzrT74LmXockx+rVq40urd3uuece19+vHj16OCZMmOB49913jS7La3760586fvnLXxpdhkemTZvm6N27tyMsLMzRp08fx9SpUx1ffPGF0WV57K233nIMHz7cYbFYHOedd57jpZdeMrokn2AfRwAAAABAq5jjCAAAAABoFcERAAAAANAqgiMAAAAAoFUERwAAAABAqwiOAAAAAIBWERwBAAAAAK0iOAIAAAAAWkVwBIKAyWTS66+/bnQZAAAA6KIIjkAAKCws1Ny5c3XWWWfJYrEoJSVFkydP1pYtW4wuDQCAoPfRRx8pNDRU11xzjdvx77//XiaTyXUJDw/X4MGD9eSTT8rhcBhULRCYzEYXAHR133//vcaNG6eEhAT9/ve/14gRI1RXV6fs7GzNmTNHX375pdElAgAQ1FatWqW5c+dqxYoVysvLU//+/d1u/+c//6lhw4bJarXqgw8+0MyZM9W7d2/NmDHDoIqBwEPHETDY7NmzZTKZ9PHHH+vmm2/WkCFDNGzYMGVkZGjnzp3N3ufXv/61hgwZoqioKJ111ll69NFHVVdX57p9z549uvLKKxUbG6u4uDiNHj1au3btkiQdOnRIkydPVrdu3RQdHa1hw4Zp06ZNfnmtAAD4W2Vlpf7yl7/ovvvu0/XXX681a9Y0Oad79+7q1auXBgwYoNtvv11jx47Vp59+6v9igQBGxxEw0PHjx/XOO+/oqaeeUnR0dJPbExISmr1fbGys1qxZoz59+mjv3r36xS9+odjYWP33f/+3JOn2229XamqqsrKyFBoaqtzcXIWFhUmS5syZo9raWu3YsUPR0dHat2+fYmJifPYaAQAw0vr163Xuuefq3HPP1c9//nPNnTtXjz76qEwmU7Pn79q1S59++qnuvPNOP1cKBDaCI2Cgb7/9Vg6HQ+edd1677vc///M/rj8PHDhQDz/8sNavX+8Kjnl5efrVr37letxzzjnHdX5eXp5uuukmXXDBBZKks846q6MvAwCAgLVy5Ur9/Oc/lyRdc801qqio0JYtW3TVVVe5zhk7dqxCQkJUW1ururo6/dd//ZemT59uVMlAQGKoKmAg58T7lr71bMlf//pXXXbZZerVq5diYmL06KOPKi8vz3V7RkaGZs6cqauuukrPPPOMvvvuO9dtDzzwgJ588kmNGzdOjz/+uD777DPvvBgAAALMV199pY8//li33nqrJMlsNmvatGlatWqV23nr169Xbm6u9uzZo/Xr1+uNN97QI488YkTJQMAiOAIGOuecc2QymbR///4232fnzp269dZblZ6err///e/KycnRggULVFtb6zpn4cKF+uKLL3Tddddp69atOv/887Vx40ZJ0syZM3XgwAHdcccd2rt3r9LS0vT88897/bUBAGC0lStXymazqW/fvjKbzTKbzcrKytKGDRt04sQJ13kpKSkaPHiwhg4dqltuuUUPPvignn32WdXU1BhYPRBYCI6AgRITEzVp0iQtW7ZMlZWVTW4vKSlpcuzDDz/UgAEDtGDBAqWlpemcc87RoUOHmpw3ZMgQPfTQQ3r33Xc1depUrV692nVbSkqKZs2apQ0bNujhhx/Wyy+/7NXXBQCA0Ww2m9auXatnn31Wubm5rsuePXs0YMAAvfLKKy3eNzQ0VDabze1LWaCrY44jYLDly5dr7Nixuvjii7Vo0SKNGDFCNptNmzdvVlZWVpNu5ODBg5WXl6fXXntNF110kf7xj3+4uomSVF1drV/96le6+eabNWjQIB0+fFiffPKJbrrpJknSgw8+qPT0dA0ZMkQnTpzQ1q1bNXToUL++ZgAAfO3vf/+7Tpw4oRkzZig+Pt7ttptvvlkrV67U9ddfL0k6duyYCgsLZbPZtHfvXv3hD3/QlVdeqbi4OCNKBwISwREw2KBBg/Tpp5/qqaee0sMPP6yCggL16NFDo0ePVlZWVpPzp0yZooceekj333+/rFarrrvuOj366KNauHChpIZvSY8dO6bp06frxx9/VFJSkqZOnaonnnhCklRfX685c+bo8OHDiouL0zXXXKP/9//+nz9fMgAAPrdy5UpdddVVTUKjJN100016+umndfz4cUlyLZQTGhqq3r1769prr9VTTz3l13qBQGdyOFfnAAAAAACgGcxxBAAAAAC0iuAIAAAAAGgVwREAAAAA0CqCIwAAAACgVQRHAAAAAECrCI4AAAAAgFYRHAEAAAAArSI4AgAAAABaRXAEAAAAALSK4AgAAAAAaBXBEQAAAADQKoIjAAAAAKBV/z/gBptFihIJeQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(11, 5))\n", + "sns.boxenplot(data=train_df, x=dependent, y=\"AB\", ax=ax1)\n", + "sns.kdeplot(data=train_df, x=\"AB\", ax=ax2)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8e026db2", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.727198Z", + "iopub.status.busy": "2023-07-24T16:44:16.726717Z", + "iopub.status.idle": "2023-07-24T16:44:16.733786Z", + "shell.execute_reply": "2023-07-24T16:44:16.732415Z" + }, + "papermill": { + "duration": 0.033511, + "end_time": "2023-07-24T16:44:16.736496", + "exception": false, + "start_time": "2023-07-24T16:44:16.702985", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def score(col, y, split_value):\n", + " lhs = col <= split_value\n", + " return (_side_score(lhs, y) + _side_score(~lhs, y))/len(y)\n", + "\n", + "def _side_score(side, y):\n", + " count = side.sum()\n", + " if count <=1: return 0\n", + " return y[side].std() * count " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "0e8ba4c9", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.785021Z", + "iopub.status.busy": "2023-07-24T16:44:16.784601Z", + "iopub.status.idle": "2023-07-24T16:44:16.794431Z", + "shell.execute_reply": "2023-07-24T16:44:16.793242Z" + }, + "papermill": { + "duration": 0.037087, + "end_time": "2023-07-24T16:44:16.796937", + "exception": false, + "start_time": "2023-07-24T16:44:16.759850", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.36017711175753037" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "score(train_df.AB, train_df[dependent], 0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "d3c0d15d", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.845942Z", + "iopub.status.busy": "2023-07-24T16:44:16.845463Z", + "iopub.status.idle": "2023-07-24T16:44:16.860957Z", + "shell.execute_reply": "2023-07-24T16:44:16.859816Z" + }, + "papermill": { + "duration": 0.043549, + "end_time": "2023-07-24T16:44:16.863292", + "exception": false, + "start_time": "2023-07-24T16:44:16.819743", + "status": "completed" + }, + "tags": [] + }, + "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", + "
EJ
01
10
21
31
41
\n", + "
" + ], + "text/plain": [ + " EJ\n", + "0 1\n", + "1 0\n", + "2 1\n", + "3 1\n", + "4 1" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_df_n = train_df.copy()\n", + "train_df_n[categoricals] = train_df_n[categoricals].apply(lambda x: x.cat.codes)\n", + "train_df_n[categoricals].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "4fb70875", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.910659Z", + "iopub.status.busy": "2023-07-24T16:44:16.910276Z", + "iopub.status.idle": "2023-07-24T16:44:16.918831Z", + "shell.execute_reply": "2023-07-24T16:44:16.917666Z" + }, + "papermill": { + "duration": 0.035136, + "end_time": "2023-07-24T16:44:16.921154", + "exception": false, + "start_time": "2023-07-24T16:44:16.886018", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.3803100751041243" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "score(train_df_n.EJ, train_df_n[dependent], 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "74ede026", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:16.968332Z", + "iopub.status.busy": "2023-07-24T16:44:16.967926Z", + "iopub.status.idle": "2023-07-24T16:44:16.978154Z", + "shell.execute_reply": "2023-07-24T16:44:16.977068Z" + }, + "papermill": { + "duration": 0.036582, + "end_time": "2023-07-24T16:44:16.980412", + "exception": false, + "start_time": "2023-07-24T16:44:16.943830", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.081187 , 0.08546 , 0.098279 , 0.102552 , 0.111098 , 0.119644 ,\n", + " 0.1217805, 0.1303265, 0.132463 , 0.136736 , 0.141009 , 0.145282 ,\n", + " 0.149555 , 0.153828 , 0.1559645, 0.158101 , 0.1602375, 0.162374 ,\n", + " 0.166647 , 0.17092 , 0.175193 , 0.179466 , 0.183739 , 0.1858755,\n", + " 0.188012 , 0.1901485, 0.192285 , 0.196558 , 0.200831 , 0.2029675,\n", + " 0.205104 , 0.209377 , 0.21365 , 0.217923 , 0.222196 , 0.2243325,\n", + " 0.226469 , 0.230742 , 0.235015 , 0.239288 , 0.243561 , 0.247834 ,\n", + " 0.252107 , 0.25638 , 0.260653 , 0.2627895, 0.264926 , 0.269199 ,\n", + " 0.2713355, 0.273472 ])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col = train_df_n[\"AB\"]\n", + "y = train_df_n[dependent]\n", + "uniques = col.unique()\n", + "uniques.sort()\n", + "uniques[:50]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "413a02f2", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:17.030099Z", + "iopub.status.busy": "2023-07-24T16:44:17.029658Z", + "iopub.status.idle": "2023-07-24T16:44:17.247190Z", + "shell.execute_reply": "2023-07-24T16:44:17.245780Z" + }, + "papermill": { + "duration": 0.244833, + "end_time": "2023-07-24T16:44:17.249646", + "exception": false, + "start_time": "2023-07-24T16:44:17.004813", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.410208" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scores = np.array([score(col, y, split) for split in uniques])\n", + "uniques[scores.argmin()]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "eed27115", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:17.299049Z", + "iopub.status.busy": "2023-07-24T16:44:17.298621Z", + "iopub.status.idle": "2023-07-24T16:44:17.305637Z", + "shell.execute_reply": "2023-07-24T16:44:17.304339Z" + }, + "papermill": { + "duration": 0.035016, + "end_time": "2023-07-24T16:44:17.308302", + "exception": false, + "start_time": "2023-07-24T16:44:17.273286", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def min_column(df, col_name):\n", + " col, y = df[col_name], df[dependent]\n", + " uniques = col.unique()\n", + " scores = np.array([score(col, y, split) for split in uniques])\n", + " index = scores.argmin()\n", + " return uniques[index], scores[index]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "0e6b0a27", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:17.357431Z", + "iopub.status.busy": "2023-07-24T16:44:17.357028Z", + "iopub.status.idle": "2023-07-24T16:44:17.570213Z", + "shell.execute_reply": "2023-07-24T16:44:17.568909Z" + }, + "papermill": { + "duration": 0.24057, + "end_time": "2023-07-24T16:44:17.572930", + "exception": false, + "start_time": "2023-07-24T16:44:17.332360", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.410208, 0.3561906829723693)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_column(train_df_n, \"AB\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "43357eb1", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:17.622176Z", + "iopub.status.busy": "2023-07-24T16:44:17.621775Z", + "iopub.status.idle": "2023-07-24T16:44:17.634131Z", + "shell.execute_reply": "2023-07-24T16:44:17.632967Z" + }, + "papermill": { + "duration": 0.039634, + "end_time": "2023-07-24T16:44:17.636535", + "exception": false, + "start_time": "2023-07-24T16:44:17.596901", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 0.3773339803468088)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_column(train_df_n, \"EJ\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "a6492aec", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:17.686744Z", + "iopub.status.busy": "2023-07-24T16:44:17.686346Z", + "iopub.status.idle": "2023-07-24T16:44:38.570938Z", + "shell.execute_reply": "2023-07-24T16:44:38.569633Z" + }, + "papermill": { + "duration": 20.912843, + "end_time": "2023-07-24T16:44:38.573740", + "exception": false, + "start_time": "2023-07-24T16:44:17.660897", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "columns = conts + categoricals\n", + "splits = {col: min_column(train_df_n, col) for col in columns}" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "bb3dc767", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.623190Z", + "iopub.status.busy": "2023-07-24T16:44:38.622692Z", + "iopub.status.idle": "2023-07-24T16:44:38.634639Z", + "shell.execute_reply": "2023-07-24T16:44:38.633366Z" + }, + "papermill": { + "duration": 0.039474, + "end_time": "2023-07-24T16:44:38.636901", + "exception": false, + "start_time": "2023-07-24T16:44:38.597427", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'AB': (0.410208, 0.3561906829723693),\n", + " 'AF': (2808.64232, 0.35583548065304915),\n", + " 'AH': (193.801377, 0.3761985927636321),\n", + " 'AM': (149.318758, 0.367338331639673),\n", + " 'AR': (16.327194, 0.3678281215243884),\n", + " 'AX': (17.877462, 0.37677322461475915),\n", + " 'AY': (0.6019965, 0.37677322461475915),\n", + " 'AZ': (10.971782, 0.3782810033906922),\n", + " 'BC': (13.500788, 0.35968813799570454),\n", + " 'BD ': (12083.34891, 0.3749922782916859),\n", + " 'BN': (21.186, 0.3651185274145938),\n", + " 'BP': (196.710795, 0.3725348222558456),\n", + " 'BQ': (115.695865, 0.3668876611761174),\n", + " 'BR': (3466.745415, 0.374094640781585),\n", + " 'BZ': (2885.319798, 0.376211243844383),\n", + " 'CB': (13.32695, 0.37775055805021784),\n", + " 'CC': (0.5478777, 0.3665150807004323),\n", + " 'CD ': (85.955376, 0.3635292346687648),\n", + " 'CF': (1.8504485, 0.367406050093466),\n", + " 'CH': (0.016318, 0.3782672405025747),\n", + " 'CL': (1.24754, 0.37657306471010377),\n", + " 'CR': (0.527325, 0.35228611051878406),\n", + " 'CS': (62.2516675, 0.37277362672289577),\n", + " 'CU': (1.274427, 0.37534114864714596),\n", + " 'CW ': (35.67944, 0.3772898765041537),\n", + " 'DA': (27.36564, 0.353137425790351),\n", + " 'DE': (149.18453, 0.3625701653246753),\n", + " 'DF': (0.500175, 0.36551421649454285),\n", + " 'DH': (0.240504, 0.3671902453269601),\n", + " 'DI': (253.8155925, 0.3550252288774408),\n", + " 'DL': (134.1642, 0.37162996473999704),\n", + " 'DN': (59.068544, 0.3749922782916859),\n", + " 'DU': (2.27601, 0.3207517917154871),\n", + " 'DV': (2.19891, 0.37819979248926816),\n", + " 'DY': (4.474032, 0.3708655621394996),\n", + " 'EB': (6.269316, 0.3625606667600181),\n", + " 'EE': (1.463253, 0.36191183975348784),\n", + " 'EG': (6845.912275, 0.37731357741606586),\n", + " 'EH': (0.389376, 0.3593626675299252),\n", + " 'EL': (46.05744, 0.37829464648148575),\n", + " 'EP': (224.078075, 0.37429306818140773),\n", + " 'EU': (8.497392, 0.3699652228963962),\n", + " 'FC': (13.33752, 0.37580636037706155),\n", + " 'FD ': (8.151501, 0.3607755013721559),\n", + " 'FE': (15667.04141, 0.3658514670660312),\n", + " 'FI': (8.9724075, 0.3657210528731738),\n", + " 'FL': (7.925430474, 0.3436877494985317),\n", + " 'FR': (2.73702, 0.365585424163423),\n", + " 'FS': (0.839852, 0.37680072033409695),\n", + " 'GB': (40.435794, 0.37726637931071944),\n", + " 'GE': (363.134821, 0.37718575251296815),\n", + " 'GF': (14737.27446, 0.37078665888029855),\n", + " 'GH': (61.028121, 0.3762112438443829),\n", + " 'GI': (117.6047, 0.3767203577225661),\n", + " 'GL': (0.121055405, 0.3450719268397208),\n", + " 'EJ': (0, 0.3773339803468088)}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "splits" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "52639ab5", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.686199Z", + "iopub.status.busy": "2023-07-24T16:44:38.685810Z", + "iopub.status.idle": "2023-07-24T16:44:38.694136Z", + "shell.execute_reply": "2023-07-24T16:44:38.692987Z" + }, + "papermill": { + "duration": 0.035929, + "end_time": "2023-07-24T16:44:38.696448", + "exception": false, + "start_time": "2023-07-24T16:44:38.660519", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('DU', (2.27601, 0.3207517917154871))" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_score = 1\n", + "for k, v in splits.items():\n", + " if v[1] < min_score:\n", + " min_score = v[1]\n", + " min_score_column = k\n", + "min_score_column, splits[min_score_column]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "db228b40", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.746055Z", + "iopub.status.busy": "2023-07-24T16:44:38.745633Z", + "iopub.status.idle": "2023-07-24T16:44:38.754438Z", + "shell.execute_reply": "2023-07-24T16:44:38.753288Z" + }, + "papermill": { + "duration": 0.036495, + "end_time": "2023-07-24T16:44:38.756872", + "exception": false, + "start_time": "2023-07-24T16:44:38.720377", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "random.seed(42)\n", + "model_train, model_val = train_test_split(train_df_n, test_size=0.25)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "af257808", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.806052Z", + "iopub.status.busy": "2023-07-24T16:44:38.805634Z", + "iopub.status.idle": "2023-07-24T16:44:38.813349Z", + "shell.execute_reply": "2023-07-24T16:44:38.812218Z" + }, + "papermill": { + "duration": 0.035087, + "end_time": "2023-07-24T16:44:38.815789", + "exception": false, + "start_time": "2023-07-24T16:44:38.780702", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((462, 58), (155, 58))" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_train.shape, model_val.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "826b8577", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.865624Z", + "iopub.status.busy": "2023-07-24T16:44:38.865223Z", + "iopub.status.idle": "2023-07-24T16:44:38.874010Z", + "shell.execute_reply": "2023-07-24T16:44:38.872794Z" + }, + "papermill": { + "duration": 0.036331, + "end_time": "2023-07-24T16:44:38.876334", + "exception": false, + "start_time": "2023-07-24T16:44:38.840003", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def x_y(df):\n", + " return df[conts + categoricals], df[dependent]\n", + "\n", + "model_train_x, model_train_y = x_y(model_train)\n", + "model_val_x, model_val_y = x_y(model_val)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "200f56c2", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:38.926349Z", + "iopub.status.busy": "2023-07-24T16:44:38.925940Z", + "iopub.status.idle": "2023-07-24T16:44:54.658739Z", + "shell.execute_reply": "2023-07-24T16:44:54.657510Z" + }, + "papermill": { + "duration": 15.761202, + "end_time": "2023-07-24T16:44:54.661616", + "exception": false, + "start_time": "2023-07-24T16:44:38.900414", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "one_r_splits = {col: min_column(model_train, col) for col in model_train_x.columns}" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "f8283bdf", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:54.712831Z", + "iopub.status.busy": "2023-07-24T16:44:54.712370Z", + "iopub.status.idle": "2023-07-24T16:44:54.724108Z", + "shell.execute_reply": "2023-07-24T16:44:54.722940Z" + }, + "papermill": { + "duration": 0.039814, + "end_time": "2023-07-24T16:44:54.726650", + "exception": false, + "start_time": "2023-07-24T16:44:54.686836", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'AB': (0.581128, 0.3500151266645586),\n", + " 'AF': (2807.2121, 0.3482960305933906),\n", + " 'AH': (196.117971, 0.37031622929971825),\n", + " 'AM': (113.124119, 0.3677805771621117),\n", + " 'AR': (15.870966, 0.36607803019531715),\n", + " 'AX': (17.877462, 0.3701715230565572),\n", + " 'AY': (0.038976, 0.372511904676532),\n", + " 'AZ': (23.626198, 0.3735437010139049),\n", + " 'BC': (13.500788, 0.35865783745331065),\n", + " 'BD ': (10563.27538, 0.37017152305655715),\n", + " 'BN': (20.8329, 0.36082123208699335),\n", + " 'BP': (282.245337, 0.36079488319104713),\n", + " 'BQ': (69.65249, 0.36180119785038894),\n", + " 'BR': (5161.327397, 0.36527011004085347),\n", + " 'BZ': (2885.319798, 0.36963503519601426),\n", + " 'CB': (12.931737, 0.37244503925274197),\n", + " 'CC': (0.61375644, 0.3617285103240913),\n", + " 'CD ': (85.68186, 0.3631411826566342),\n", + " 'CF': (1.8504485, 0.36160897217069404),\n", + " 'CH': (0.012338, 0.3725637613110524),\n", + " 'CL': (1.24754, 0.3725459888575431),\n", + " 'CR': (0.527325, 0.34941117879168376),\n", + " 'CS': (62.2516675, 0.3671272819598272),\n", + " 'CU': (1.125468, 0.366462462615929),\n", + " 'CW ': (35.67944, 0.3672847631433858),\n", + " 'DA': (29.1194, 0.3463316955107069),\n", + " 'DE': (155.36692, 0.36119828797693376),\n", + " 'DF': (0.500175, 0.3650918054126017),\n", + " 'DH': (0.2719335, 0.362288870397952),\n", + " 'DI': (192.67764, 0.34941117879168376),\n", + " 'DL': (134.1642, 0.3646293261032984),\n", + " 'DN': (21.024744, 0.36748569748798376),\n", + " 'DU': (2.262216, 0.3196074664465314),\n", + " 'DV': (1.74307, 0.37176172009930203),\n", + " 'DY': (3.890072, 0.3676248337188574),\n", + " 'EB': (6.269316, 0.35697558261424034),\n", + " 'EE': (1.463253, 0.35748838200348587),\n", + " 'EG': (6845.912275, 0.3720728224305451),\n", + " 'EH': (1.521, 0.3527183592451205),\n", + " 'EL': (11.094798, 0.3725637613110524),\n", + " 'EP': (224.078075, 0.36960833445153146),\n", + " 'EU': (6.537624, 0.36450134846788734),\n", + " 'FC': (13.286112, 0.3705960987901368),\n", + " 'FD ': (8.151501, 0.35395076856984536),\n", + " 'FE': (28141.50595, 0.3638562145037893),\n", + " 'FI': (8.9724075, 0.3603920499475795),\n", + " 'FL': (6.720894827, 0.34161499102282883),\n", + " 'FR': (2.86346, 0.3523235128808954),\n", + " 'FS': (0.88049, 0.36984546183970063),\n", + " 'GB': (34.845292, 0.36994696490448187),\n", + " 'GE': (771.058022, 0.3735437010139049),\n", + " 'GF': (14412.89425, 0.36657418543636233),\n", + " 'GH': (62.47559, 0.3677289926805099),\n", + " 'GI': (105.603748, 0.3712885732260451),\n", + " 'GL': (0.121055405, 0.34590901176068733),\n", + " 'EJ': (0, 0.37298104861476167)}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "one_r_splits" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "ac1adab1", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:54.777147Z", + "iopub.status.busy": "2023-07-24T16:44:54.776679Z", + "iopub.status.idle": "2023-07-24T16:44:54.786283Z", + "shell.execute_reply": "2023-07-24T16:44:54.785073Z" + }, + "papermill": { + "duration": 0.037629, + "end_time": "2023-07-24T16:44:54.788679", + "exception": false, + "start_time": "2023-07-24T16:44:54.751050", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "('DU', (2.262216, 0.3196074664465314))" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_best_split(splits):\n", + " min_score = 1\n", + " for k, v in splits.items():\n", + " if v[1] < min_score:\n", + " min_score = v[1]\n", + " min_score_column = k\n", + " return min_score_column, splits[min_score_column]\n", + "\n", + "column, split = get_best_split(one_r_splits)\n", + "column, split" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "ee885f6f", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:54.839569Z", + "iopub.status.busy": "2023-07-24T16:44:54.839186Z", + "iopub.status.idle": "2023-07-24T16:44:54.845066Z", + "shell.execute_reply": "2023-07-24T16:44:54.843841Z" + }, + "papermill": { + "duration": 0.034188, + "end_time": "2023-07-24T16:44:54.847548", + "exception": false, + "start_time": "2023-07-24T16:44:54.813360", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "preds = model_val_x[\"DU\"] <= 2.262216" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "bae2f1e0", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:54.897930Z", + "iopub.status.busy": "2023-07-24T16:44:54.897509Z", + "iopub.status.idle": "2023-07-24T16:44:54.905883Z", + "shell.execute_reply": "2023-07-24T16:44:54.904775Z" + }, + "papermill": { + "duration": 0.035999, + "end_time": "2023-07-24T16:44:54.908032", + "exception": false, + "start_time": "2023-07-24T16:44:54.872033", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.864516129032258" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_absolute_error(model_val_y, preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "f73a3e24", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:54.958253Z", + "iopub.status.busy": "2023-07-24T16:44:54.957855Z", + "iopub.status.idle": "2023-07-24T16:44:54.968775Z", + "shell.execute_reply": "2023-07-24T16:44:54.967628Z" + }, + "papermill": { + "duration": 0.039026, + "end_time": "2023-07-24T16:44:54.971216", + "exception": false, + "start_time": "2023-07-24T16:44:54.932190", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "25.950508209640226" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def balanced_logarithmic_loss(y_true, y_pred):\n", + " N_1 = np.sum(y_true == 1, axis=0)\n", + " N_0 = np.sum(y_true == 0, axis=0)\n", + "\n", + " y_pred = np.maximum(np.minimum(y_pred, 1 - 1e-15), 1e-15)\n", + " loss_numerator = - (1/N_0) * np.sum((1 - y_true) * np.log(1-y_pred)) - (1/N_1) * np.sum(y_true * np.log(y_pred))\n", + "\n", + " return loss_numerator / 2\n", + "\n", + "balanced_logarithmic_loss(model_val_y.to_numpy(), preds.to_numpy())" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "0353351c", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:55.022104Z", + "iopub.status.busy": "2023-07-24T16:44:55.021669Z", + "iopub.status.idle": "2023-07-24T16:44:55.031420Z", + "shell.execute_reply": "2023-07-24T16:44:55.030445Z" + }, + "papermill": { + "duration": 0.038255, + "end_time": "2023-07-24T16:44:55.033907", + "exception": false, + "start_time": "2023-07-24T16:44:54.995652", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((396, 58), (66, 58))" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lhs = model_train[\"DU\"] <= 2.262216\n", + "left_group = model_train[lhs]\n", + "right_group = model_train[~lhs]\n", + "left_group.shape, right_group.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "5c9ef555", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:44:55.086834Z", + "iopub.status.busy": "2023-07-24T16:44:55.086398Z", + "iopub.status.idle": "2023-07-24T16:45:10.755543Z", + "shell.execute_reply": "2023-07-24T16:45:10.754179Z" + }, + "papermill": { + "duration": 15.699515, + "end_time": "2023-07-24T16:45:10.758597", + "exception": false, + "start_time": "2023-07-24T16:44:55.059082", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "({'AB': (0.363205, 0.2205227532918278),\n", + " 'AF': (1744.8442, 0.26422367520400314),\n", + " 'AH': (186.276801, 0.28281828339030296),\n", + " 'AM': (16.333578, 0.2678889313583875),\n", + " 'AR': (15.870966, 0.2866140712941824),\n", + " 'AX': (5.244528, 0.2773853964685262),\n", + " 'AY': (0.6019965, 0.2874443162878375),\n", + " 'AZ': (8.186298, 0.2851965412728709),\n", + " 'BC': (13.500788, 0.254228411937528),\n", + " 'BD ': (10563.27538, 0.28342483094474047),\n", + " 'BN': (15.1833, 0.2815221656802702),\n", + " 'BP': (318.7728, 0.27010283692431253),\n", + " 'BQ': (11.865775, 0.2794184862139197),\n", + " 'BR': (5161.327397, 0.2752096532354187),\n", + " 'BZ': (1703.832302, 0.28396363710150363),\n", + " 'CB': (12.931737, 0.28032816063022753),\n", + " 'CC': (0.61375644, 0.2699890428677908),\n", + " 'CD ': (88.048368, 0.2693262549530457),\n", + " 'CF': (2.548358, 0.27644641567153155),\n", + " 'CH': (0.016716, 0.2836102268644721),\n", + " 'CL': (1.152065, 0.2817474069769845),\n", + " 'CR': (0.6729, 0.25077109773069917),\n", + " 'CS': (55.8007175, 0.2831938474420979),\n", + " 'CU': (1.059264, 0.2763697098465586),\n", + " 'CW ': (44.301128, 0.28402599531661465),\n", + " 'DA': (38.83104, 0.24522761095128734),\n", + " 'DE': (151.051665, 0.2694259159914128),\n", + " 'DF': (0.500175, 0.2709760197318968),\n", + " 'DH': (0.240504, 0.26672971464460576),\n", + " 'DI': (194.021745, 0.24826322692985892),\n", + " 'DL': (113.1762, 0.25651840267368864),\n", + " 'DN': (59.068544, 0.27934746754006307),\n", + " 'DV': (3.04325, 0.28815065732759965),\n", + " 'DY': (8.91662, 0.2751628343696961),\n", + " 'EB': (17.691204, 0.28033350160822096),\n", + " 'EE': (1.443098, 0.2525775803204561),\n", + " 'EG': (2330.295275, 0.28380953536491194),\n", + " 'EH': (0.03042, 0.2776192844889819),\n", + " 'EL': (24.567972, 0.2708402531316478),\n", + " 'EP': (224.078075, 0.2873304659747274),\n", + " 'EU': (6.537624, 0.22930957657304885),\n", + " 'FC': (26.663616, 0.28636197449296075),\n", + " 'FD ': (5.325489, 0.270404190514022),\n", + " 'FE': (15667.04141, 0.2782594217449274),\n", + " 'FI': (7.822947, 0.2738422457069847),\n", + " 'FL': (0.296625, 0.2858261205083379),\n", + " 'FR': (2.86346, 0.256970642908978),\n", + " 'FS': (1.21914, 0.2865342615078834),\n", + " 'GB': (34.845292, 0.2833625612804258),\n", + " 'GE': (771.058022, 0.29019098509591523),\n", + " 'GF': (1571.342004, 0.2846660155262617),\n", + " 'GH': (43.20081, 0.2795202987385677),\n", + " 'GI': (8.701076, 0.28277685434606015),\n", + " 'GL': (0.561, 0.2841560493396353),\n", + " 'EJ': (0, 0.2877201690556401)},\n", + " {'AB': (0.235015, 0.4583176806743689),\n", + " 'AF': (2668.16616, 0.4708737384176801),\n", + " 'AH': (170.365458, 0.47075213362693974),\n", + " 'AM': (44.401689, 0.4646573463122341),\n", + " 'AR': (14.727774, 0.44553059864417316),\n", + " 'AX': (6.272172, 0.4432056139475385),\n", + " 'AY': (0.1068795, 0.45870530538108095),\n", + " 'AZ': (17.89768, 0.4828616963629532),\n", + " 'BC': (11.733246, 0.4689554885298609),\n", + " 'BD ': (7678.43794, 0.4785433967084947),\n", + " 'BN': (19.0674, 0.4789832263550328),\n", + " 'BP': (752.38011, 0.4789832263550328),\n", + " 'BQ': (40.66405, 0.46574855874267257),\n", + " 'BR': (906.218837, 0.47604720080279034),\n", + " 'BZ': (2165.826792, 0.48286169636295323),\n", + " 'CB': (64.134798, 0.48142065877400064),\n", + " 'CC': (0.28939032, 0.47684593482996557),\n", + " 'CD ': (38.878912, 0.4645771635252842),\n", + " 'CF': (2.600055, 0.4493931256642845),\n", + " 'CH': (0.048158, 0.4789832263550328),\n", + " 'CL': (3.341625, 0.47684593482996557),\n", + " 'CR': (0.42195, 0.4645771635252842),\n", + " 'CS': (26.776673, 0.4519701054647674),\n", + " 'CU': (0.408258, 0.45870530538108095),\n", + " 'CW ': (45.734856, 0.47684593482996557),\n", + " 'DA': (31.61424, 0.4323589687324282),\n", + " 'DE': (38.189785, 0.4789832263550328),\n", + " 'DF': (2.976129, 0.4789832263550328),\n", + " 'DH': (0.524736, 0.4689554885298609),\n", + " 'DI': (148.8737475, 0.4630168573674233),\n", + " 'DL': (134.1642, 0.4689554885298609),\n", + " 'DN': (27.275528, 0.4646573463122341),\n", + " 'DV': (2.08236, 0.4645771635252842),\n", + " 'DY': (8.184424, 0.47684593482996557),\n", + " 'EB': (4.926396, 0.4482172507605322),\n", + " 'EE': (2.450848, 0.4806126011483664),\n", + " 'EG': (979.1558875, 0.42561760588538),\n", + " 'EH': (1.521, 0.4323589687324282),\n", + " 'EL': (52.693641, 0.4784120740720739),\n", + " 'EP': (98.5989875, 0.45771848227839446),\n", + " 'EU': (77.304492, 0.45870530538108095),\n", + " 'FC': (34.489056, 0.4519040862043542),\n", + " 'FD ': (31.863879, 0.4519701054647674),\n", + " 'FE': (20522.19526, 0.4389950342373603),\n", + " 'FI': (8.616819, 0.42587247147903806),\n", + " 'FL': (23.9606794, 0.42561760588538),\n", + " 'FR': (2.51111, 0.47075213362693974),\n", + " 'FS': (1.571336, 0.4689554885298609),\n", + " 'GB': (9.888026, 0.47075213362693974),\n", + " 'GE': (218.570828, 0.4645771635252842),\n", + " 'GF': (840.636873, 0.47684593482996557),\n", + " 'GH': (17.767775, 0.44553059864417316),\n", + " 'GI': (90.493248, 0.42561760588538),\n", + " 'GL': (0.047863636, 0.40470758822889663),\n", + " 'EJ': (1, 0.4888023515980042)})" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "second_level_columns = [c for c in (conts + categoricals) if c != \"DU\"]\n", + "left_splits = {col: min_column(left_group, col) for col in second_level_columns}\n", + "right_splits = {col: min_column(right_group, col) for col in second_level_columns}\n", + "left_splits, right_splits" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "26273a6e", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:10.811960Z", + "iopub.status.busy": "2023-07-24T16:45:10.811092Z", + "iopub.status.idle": "2023-07-24T16:45:10.819217Z", + "shell.execute_reply": "2023-07-24T16:45:10.818021Z" + }, + "papermill": { + "duration": 0.037608, + "end_time": "2023-07-24T16:45:10.821589", + "exception": false, + "start_time": "2023-07-24T16:45:10.783981", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(('AB', (0.363205, 0.2205227532918278)),\n", + " ('GL', (0.047863636, 0.40470758822889663)))" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best_left_split = get_best_split(left_splits)\n", + "best_right_split = get_best_split(right_splits)\n", + "best_left_split, best_right_split" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "e2c06b1a", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:10.874736Z", + "iopub.status.busy": "2023-07-24T16:45:10.873888Z", + "iopub.status.idle": "2023-07-24T16:45:10.893869Z", + "shell.execute_reply": "2023-07-24T16:45:10.892807Z" + }, + "papermill": { + "duration": 0.049636, + "end_time": "2023-07-24T16:45:10.896584", + "exception": false, + "start_time": "2023-07-24T16:45:10.846948", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "model = DecisionTreeClassifier(max_leaf_nodes=4).fit(model_train_x, model_train_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "05da0a60", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:10.950149Z", + "iopub.status.busy": "2023-07-24T16:45:10.949300Z", + "iopub.status.idle": "2023-07-24T16:45:10.956395Z", + "shell.execute_reply": "2023-07-24T16:45:10.955404Z" + }, + "papermill": { + "duration": 0.036988, + "end_time": "2023-07-24T16:45:10.958987", + "exception": false, + "start_time": "2023-07-24T16:45:10.921999", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def draw_tree(tree, df, size=10, ratio=0.6, precision=2, **kwargs):\n", + " dot_format = export_graphviz(tree, out_file=None, feature_names=df.columns, filled=True, rounded=True,\n", + " special_characters=True, rotate=False, precision=precision, **kwargs)\n", + " return graphviz.Source(re.sub('Tree {', f'Tree {{ size={size}; ratio={ratio}', dot_format))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "150a5f26", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.016195Z", + "iopub.status.busy": "2023-07-24T16:45:11.015706Z", + "iopub.status.idle": "2023-07-24T16:45:11.021318Z", + "shell.execute_reply": "2023-07-24T16:45:11.020015Z" + }, + "papermill": { + "duration": 0.038888, + "end_time": "2023-07-24T16:45:11.024293", + "exception": false, + "start_time": "2023-07-24T16:45:10.985405", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "#draw_tree(model, model_train_x, size=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "6ec6bbe6", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.077510Z", + "iopub.status.busy": "2023-07-24T16:45:11.077074Z", + "iopub.status.idle": "2023-07-24T16:45:11.083150Z", + "shell.execute_reply": "2023-07-24T16:45:11.081749Z" + }, + "papermill": { + "duration": 0.036188, + "end_time": "2023-07-24T16:45:11.086010", + "exception": false, + "start_time": "2023-07-24T16:45:11.049822", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def gini(df, condition):\n", + " actual = df.loc[condition, dependent]\n", + " return 1 - actual.mean()**2 - (1-actual).mean()**2" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "0a5a233d", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.140927Z", + "iopub.status.busy": "2023-07-24T16:45:11.140516Z", + "iopub.status.idle": "2023-07-24T16:45:11.151094Z", + "shell.execute_reply": "2023-07-24T16:45:11.149586Z" + }, + "papermill": { + "duration": 0.041471, + "end_time": "2023-07-24T16:45:11.153859", + "exception": false, + "start_time": "2023-07-24T16:45:11.112388", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.16940873380267307, 0.47061524334251614)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gini(model_train, model_train['DU'] <= 2.28), gini(model_train, model_train['DU'] > 2.28)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "776f15c6", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.207742Z", + "iopub.status.busy": "2023-07-24T16:45:11.207279Z", + "iopub.status.idle": "2023-07-24T16:45:11.219968Z", + "shell.execute_reply": "2023-07-24T16:45:11.218553Z" + }, + "papermill": { + "duration": 0.042482, + "end_time": "2023-07-24T16:45:11.222553", + "exception": false, + "start_time": "2023-07-24T16:45:11.180071", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.11612903225806452" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preds = model.predict(model_val_x)\n", + "mean_absolute_error(model_val_y, preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "9a94dbfa", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.276408Z", + "iopub.status.busy": "2023-07-24T16:45:11.275966Z", + "iopub.status.idle": "2023-07-24T16:45:11.283919Z", + "shell.execute_reply": "2023-07-24T16:45:11.282776Z" + }, + "papermill": { + "duration": 0.037821, + "end_time": "2023-07-24T16:45:11.286249", + "exception": false, + "start_time": "2023-07-24T16:45:11.248428", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5.549265256402579" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "balanced_logarithmic_loss(model_val_y.to_numpy(), preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "8fe100ca", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.340440Z", + "iopub.status.busy": "2023-07-24T16:45:11.339472Z", + "iopub.status.idle": "2023-07-24T16:45:11.365194Z", + "shell.execute_reply": "2023-07-24T16:45:11.364004Z" + }, + "papermill": { + "duration": 0.055722, + "end_time": "2023-07-24T16:45:11.367845", + "exception": false, + "start_time": "2023-07-24T16:45:11.312123", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
DecisionTreeClassifier(min_samples_leaf=50)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "DecisionTreeClassifier(min_samples_leaf=50)" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = DecisionTreeClassifier(min_samples_leaf=50)\n", + "model.fit(model_train_x, model_train_y)\n", + "#draw_tree(model, model_train_x, size=12)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "a09cfd81", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.424536Z", + "iopub.status.busy": "2023-07-24T16:45:11.423634Z", + "iopub.status.idle": "2023-07-24T16:45:11.435158Z", + "shell.execute_reply": "2023-07-24T16:45:11.434167Z" + }, + "papermill": { + "duration": 0.041775, + "end_time": "2023-07-24T16:45:11.437438", + "exception": false, + "start_time": "2023-07-24T16:45:11.395663", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.12903225806451613, 8.450509680016193)" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preds = model.predict(model_val_x)\n", + "\n", + "mean_absolute_error(model_val_y, preds), balanced_logarithmic_loss(model_val_y.to_numpy(), preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "c7718f8a", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.493323Z", + "iopub.status.busy": "2023-07-24T16:45:11.492895Z", + "iopub.status.idle": "2023-07-24T16:45:11.500648Z", + "shell.execute_reply": "2023-07-24T16:45:11.499687Z" + }, + "papermill": { + "duration": 0.038846, + "end_time": "2023-07-24T16:45:11.503195", + "exception": false, + "start_time": "2023-07-24T16:45:11.464349", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def get_tree(proportion=0.75):\n", + " n = len(model_train_y)\n", + " indexes = random.choice(n, int(n*proportion))\n", + " return DecisionTreeClassifier(min_samples_leaf=5).fit(model_train_x.iloc[indexes], model_train_y.iloc[indexes]) " + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "960eb86f", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:11.560281Z", + "iopub.status.busy": "2023-07-24T16:45:11.559868Z", + "iopub.status.idle": "2023-07-24T16:45:12.735484Z", + "shell.execute_reply": "2023-07-24T16:45:12.734570Z" + }, + "papermill": { + "duration": 1.207827, + "end_time": "2023-07-24T16:45:12.737879", + "exception": false, + "start_time": "2023-07-24T16:45:11.530052", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[DecisionTreeClassifier(min_samples_leaf=5),\n", + " DecisionTreeClassifier(min_samples_leaf=5),\n", + " DecisionTreeClassifier(min_samples_leaf=5),\n", + " DecisionTreeClassifier(min_samples_leaf=5),\n", + " DecisionTreeClassifier(min_samples_leaf=5)]" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trees = [get_tree() for _ in range(100)]\n", + "trees[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "074c183c", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:12.794020Z", + "iopub.status.busy": "2023-07-24T16:45:12.793553Z", + "iopub.status.idle": "2023-07-24T16:45:12.998165Z", + "shell.execute_reply": "2023-07-24T16:45:12.996879Z" + }, + "papermill": { + "duration": 0.236135, + "end_time": "2023-07-24T16:45:13.001084", + "exception": false, + "start_time": "2023-07-24T16:45:12.764949", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "all_preds = [t.predict(model_val_x) for t in trees]\n", + "avg_preds = np.stack(all_preds).mean(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "0151ead3", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.057911Z", + "iopub.status.busy": "2023-07-24T16:45:13.057470Z", + "iopub.status.idle": "2023-07-24T16:45:13.066854Z", + "shell.execute_reply": "2023-07-24T16:45:13.065709Z" + }, + "papermill": { + "duration": 0.040619, + "end_time": "2023-07-24T16:45:13.069001", + "exception": false, + "start_time": "2023-07-24T16:45:13.028382", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.1665806451612903, 0.4201347888809029)" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_absolute_error(model_val_y, avg_preds), balanced_logarithmic_loss(model_val_y.to_numpy(), avg_preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "7485c5b0", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.125923Z", + "iopub.status.busy": "2023-07-24T16:45:13.124630Z", + "iopub.status.idle": "2023-07-24T16:45:13.509858Z", + "shell.execute_reply": "2023-07-24T16:45:13.508406Z" + }, + "papermill": { + "duration": 0.417005, + "end_time": "2023-07-24T16:45:13.513124", + "exception": false, + "start_time": "2023-07-24T16:45:13.096119", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.05806451612903226, 5.180816459236603)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf = RandomForestClassifier(n_estimators=100, min_samples_leaf=5)\n", + "rf.fit(model_train_x, model_train_y)\n", + "\n", + "preds = rf.predict(model_val_x)\n", + "\n", + "\n", + "mean_absolute_error(model_val_y, preds), balanced_logarithmic_loss(model_val_y.to_numpy(), preds)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "ab271362", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.569934Z", + "iopub.status.busy": "2023-07-24T16:45:13.569468Z", + "iopub.status.idle": "2023-07-24T16:45:13.583324Z", + "shell.execute_reply": "2023-07-24T16:45:13.582374Z" + }, + "papermill": { + "duration": 0.044952, + "end_time": "2023-07-24T16:45:13.585642", + "exception": false, + "start_time": "2023-07-24T16:45:13.540690", + "status": "completed" + }, + "tags": [] + }, + "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", + "
EJ
00
10
20
30
40
\n", + "
" + ], + "text/plain": [ + " EJ\n", + "0 0\n", + "1 0\n", + "2 0\n", + "3 0\n", + "4 0" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_df_n = test_df.copy()\n", + "test_df_n[categoricals] = test_df_n[categoricals].apply(lambda x: x.cat.codes)\n", + "test_df_n[categoricals].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "6b55ebf4", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.646524Z", + "iopub.status.busy": "2023-07-24T16:45:13.645977Z", + "iopub.status.idle": "2023-07-24T16:45:13.676183Z", + "shell.execute_reply": "2023-07-24T16:45:13.674914Z" + }, + "papermill": { + "duration": 0.063396, + "end_time": "2023-07-24T16:45:13.678929", + "exception": false, + "start_time": "2023-07-24T16:45:13.615533", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.58356527, 0.41643473],\n", + " [0.58356527, 0.41643473],\n", + " [0.58356527, 0.41643473],\n", + " [0.58356527, 0.41643473],\n", + " [0.58356527, 0.41643473]])" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "columns = conts + categoricals\n", + "test_probs = rf.predict_proba(test_df_n[columns])\n", + "test_probs" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "2175d336", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.737857Z", + "iopub.status.busy": "2023-07-24T16:45:13.736621Z", + "iopub.status.idle": "2023-07-24T16:45:13.742994Z", + "shell.execute_reply": "2023-07-24T16:45:13.741783Z" + }, + "papermill": { + "duration": 0.038114, + "end_time": "2023-07-24T16:45:13.745698", + "exception": false, + "start_time": "2023-07-24T16:45:13.707584", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "sample_submission_df[[\"class_0\", \"class_1\"]] = test_probs" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "93798a36", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.802864Z", + "iopub.status.busy": "2023-07-24T16:45:13.802409Z", + "iopub.status.idle": "2023-07-24T16:45:13.811331Z", + "shell.execute_reply": "2023-07-24T16:45:13.810078Z" + }, + "papermill": { + "duration": 0.040514, + "end_time": "2023-07-24T16:45:13.814026", + "exception": false, + "start_time": "2023-07-24T16:45:13.773512", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "sample_submission_df.to_csv(\"submission.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "62831b36", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:13.871255Z", + "iopub.status.busy": "2023-07-24T16:45:13.870405Z", + "iopub.status.idle": "2023-07-24T16:45:14.906497Z", + "shell.execute_reply": "2023-07-24T16:45:14.905184Z" + }, + "papermill": { + "duration": 1.067668, + "end_time": "2023-07-24T16:45:14.909118", + "exception": false, + "start_time": "2023-07-24T16:45:13.841450", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pd.DataFrame(dict(cols=model_train_x.columns, imp=rf.feature_importances_)).plot('cols', 'imp', 'barh', figsize=(8, 20));" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "6086949d", + "metadata": { + "execution": { + "iopub.execute_input": "2023-07-24T16:45:14.967939Z", + "iopub.status.busy": "2023-07-24T16:45:14.967498Z", + "iopub.status.idle": "2023-07-24T16:45:14.980540Z", + "shell.execute_reply": "2023-07-24T16:45:14.979376Z" + }, + "papermill": { + "duration": 0.04537, + "end_time": "2023-07-24T16:45:14.982989", + "exception": false, + "start_time": "2023-07-24T16:45:14.937619", + "status": "completed" + }, + "tags": [] + }, + "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", + "
Idclass_0class_1
000eed32682bb0.5835650.416435
1010ebe33f6680.5835650.416435
202fa521e18380.5835650.416435
3040e15f562a20.5835650.416435
4046e85c7cc7f0.5835650.416435
\n", + "
" + ], + "text/plain": [ + " Id class_0 class_1\n", + "0 00eed32682bb 0.583565 0.416435\n", + "1 010ebe33f668 0.583565 0.416435\n", + "2 02fa521e1838 0.583565 0.416435\n", + "3 040e15f562a2 0.583565 0.416435\n", + "4 046e85c7cc7f 0.583565 0.416435" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sample_submission_df.head()" + ] + } + ], + "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.10.12" + }, + "papermill": { + "default_parameters": {}, + "duration": 77.807742, + "end_time": "2023-07-24T16:45:16.137577", + "environment_variables": {}, + "exception": null, + "input_path": "__notebook__.ipynb", + "output_path": "__notebook__.ipynb", + "parameters": {}, + "start_time": "2023-07-24T16:43:58.329835", + "version": "2.4.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}