diff --git a/Prudential-life-insurance-assessment.ipynb b/Prudential-life-insurance-assessment.ipynb new file mode 100644 index 0000000..5bfa475 --- /dev/null +++ b/Prudential-life-insurance-assessment.ipynb @@ -0,0 +1,5685 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d652a156-492c-4a62-9e28-d3281f49b349", + "metadata": {}, + "source": [ + "## IMPORTANDO BIBLIOTECAS" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7456d8ed-d019-4375-925b-b0bd482c8bab", + "metadata": {}, + "outputs": [], + "source": [ + "# BIBLIOTECAS UTILIZADAS NESTE PROJETO\n", + "\n", + "from collections import Counter\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.pipeline import Pipeline\n", + "\n", + "from sklearn.experimental import enable_iterative_imputer\n", + "from sklearn.impute import IterativeImputer\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.preprocessing import OrdinalEncoder\n", + "\n", + "from imblearn.combine import SMOTEENN\n", + "\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.model_selection import validation_curve\n", + "from sklearn.model_selection import learning_curve\n", + "\n", + "from sklearn.metrics import plot_confusion_matrix\n", + "from sklearn.metrics import recall_score\n", + "from sklearn.metrics import f1_score\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d95deae8-42d7-4baa-961a-57574271d1e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Author: Apolo Ferreira Santos\n", + "\n", + "seaborn : 0.11.1\n", + "sklearn : 0.24.1\n", + "pandas : 1.2.4\n", + "matplotlib: 3.3.4\n", + "numpy : 1.20.1\n", + "\n" + ] + } + ], + "source": [ + "# VERSÕES DOS PACOTES USADOS NESTE JUPYTER NOTEBOOK\n", + "%reload_ext watermark\n", + "%watermark -a \"Apolo Ferreira Santos\" --iversions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4a171a48-323d-481e-9691-4a2e4fb1d5d3", + "metadata": {}, + "outputs": [], + "source": [ + "# CONFIGURAÇÃO PARA MOSTRAR TODAS COLUNAS DE UM DATAFRAME\n", + "pd.set_option(\"display.max_columns\", None)" + ] + }, + { + "cell_type": "markdown", + "id": "303c9293-0862-4625-933b-89943007950b", + "metadata": {}, + "source": [ + "##
ANÁLISE DO CONJUNTO DE DADOS" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "46f9902e-31ee-4550-9374-34000fa5d754", + "metadata": {}, + "outputs": [], + "source": [ + "# IMPORTANDO CONJUNTO DE DADOS DE TREINO\n", + "dataset = pd.read_csv('train.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c737d379-cee2-4dee-bd96-684ef1285452", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdProduct_Info_1Product_Info_2Product_Info_3Product_Info_4Product_Info_5Product_Info_6Product_Info_7Ins_AgeHtWtBMIEmployment_Info_1Employment_Info_2Employment_Info_3Employment_Info_4Employment_Info_5Employment_Info_6InsuredInfo_1InsuredInfo_2InsuredInfo_3InsuredInfo_4InsuredInfo_5InsuredInfo_6InsuredInfo_7Insurance_History_1Insurance_History_2Insurance_History_3Insurance_History_4Insurance_History_5Insurance_History_7Insurance_History_8Insurance_History_9Family_Hist_1Family_Hist_2Family_Hist_3Family_Hist_4Family_Hist_5Medical_History_1Medical_History_2Medical_History_3Medical_History_4Medical_History_5Medical_History_6Medical_History_7Medical_History_8Medical_History_9Medical_History_10Medical_History_11Medical_History_12Medical_History_13Medical_History_14Medical_History_15Medical_History_16Medical_History_17Medical_History_18Medical_History_19Medical_History_20Medical_History_21Medical_History_22Medical_History_23Medical_History_24Medical_History_25Medical_History_26Medical_History_27Medical_History_28Medical_History_29Medical_History_30Medical_History_31Medical_History_32Medical_History_33Medical_History_34Medical_History_35Medical_History_36Medical_History_37Medical_History_38Medical_History_39Medical_History_40Medical_History_41Medical_Keyword_1Medical_Keyword_2Medical_Keyword_3Medical_Keyword_4Medical_Keyword_5Medical_Keyword_6Medical_Keyword_7Medical_Keyword_8Medical_Keyword_9Medical_Keyword_10Medical_Keyword_11Medical_Keyword_12Medical_Keyword_13Medical_Keyword_14Medical_Keyword_15Medical_Keyword_16Medical_Keyword_17Medical_Keyword_18Medical_Keyword_19Medical_Keyword_20Medical_Keyword_21Medical_Keyword_22Medical_Keyword_23Medical_Keyword_24Medical_Keyword_25Medical_Keyword_26Medical_Keyword_27Medical_Keyword_28Medical_Keyword_29Medical_Keyword_30Medical_Keyword_31Medical_Keyword_32Medical_Keyword_33Medical_Keyword_34Medical_Keyword_35Medical_Keyword_36Medical_Keyword_37Medical_Keyword_38Medical_Keyword_39Medical_Keyword_40Medical_Keyword_41Medical_Keyword_42Medical_Keyword_43Medical_Keyword_44Medical_Keyword_45Medical_Keyword_46Medical_Keyword_47Medical_Keyword_48Response
021D3100.0769232110.6417910.5818180.1485360.3230080.0281210.03NaN126312111310.0006671122NaN0.598039NaN0.5267864.01122113221NaN3233240.033112123NaN1331323NaN1312213330000000000000000000000000000000000000000000000008
151A1260.0769232310.0597010.6000000.1317990.2722880.000130.020.0018126312121310.00013313220.188406NaN0.084507NaN5.04122113221NaN32330.013112123NaN1331323NaN3112213310000000000000000000000000000000000000000000000004
261E1260.0769232310.0298510.7454550.2887030.4287800.030910.020.030012831112113NaN32330.304348NaN0.225352NaN10.032213222NaN3233NaN13112123NaN2231323NaN3313213310000000000000000000000000000000000000000000000008
371D4100.4871792310.1641790.6727270.2050210.3524380.042910.030.200022831212113NaN32330.420290NaN0.352113NaN0.03502213222NaN3233NaN13112223NaN1331323NaN3312213310000000000000000000000000000000100000000000000008
481D2260.2307692310.4179100.6545450.2343100.4240460.027910.020.050012631212113NaN32320.463768NaN0.408451NaNNaN1622213222NaN3233NaN13112123NaN2231323NaN3313213310000000000000000000000000000000000000000000000008
\n", + "
" + ], + "text/plain": [ + " Id Product_Info_1 Product_Info_2 Product_Info_3 Product_Info_4 \\\n", + "0 2 1 D3 10 0.076923 \n", + "1 5 1 A1 26 0.076923 \n", + "2 6 1 E1 26 0.076923 \n", + "3 7 1 D4 10 0.487179 \n", + "4 8 1 D2 26 0.230769 \n", + "\n", + " Product_Info_5 Product_Info_6 Product_Info_7 Ins_Age Ht \\\n", + "0 2 1 1 0.641791 0.581818 \n", + "1 2 3 1 0.059701 0.600000 \n", + "2 2 3 1 0.029851 0.745455 \n", + "3 2 3 1 0.164179 0.672727 \n", + "4 2 3 1 0.417910 0.654545 \n", + "\n", + " Wt BMI Employment_Info_1 Employment_Info_2 \\\n", + "0 0.148536 0.323008 0.028 12 \n", + "1 0.131799 0.272288 0.000 1 \n", + "2 0.288703 0.428780 0.030 9 \n", + "3 0.205021 0.352438 0.042 9 \n", + "4 0.234310 0.424046 0.027 9 \n", + "\n", + " Employment_Info_3 Employment_Info_4 Employment_Info_5 Employment_Info_6 \\\n", + "0 1 0.0 3 NaN \n", + "1 3 0.0 2 0.0018 \n", + "2 1 0.0 2 0.0300 \n", + "3 1 0.0 3 0.2000 \n", + "4 1 0.0 2 0.0500 \n", + "\n", + " InsuredInfo_1 InsuredInfo_2 InsuredInfo_3 InsuredInfo_4 InsuredInfo_5 \\\n", + "0 1 2 6 3 1 \n", + "1 1 2 6 3 1 \n", + "2 1 2 8 3 1 \n", + "3 2 2 8 3 1 \n", + "4 1 2 6 3 1 \n", + "\n", + " InsuredInfo_6 InsuredInfo_7 Insurance_History_1 Insurance_History_2 \\\n", + "0 2 1 1 1 \n", + "1 2 1 2 1 \n", + "2 1 1 2 1 \n", + "3 2 1 2 1 \n", + "4 2 1 2 1 \n", + "\n", + " Insurance_History_3 Insurance_History_4 Insurance_History_5 \\\n", + "0 3 1 0.000667 \n", + "1 3 1 0.000133 \n", + "2 1 3 NaN \n", + "3 1 3 NaN \n", + "4 1 3 NaN \n", + "\n", + " Insurance_History_7 Insurance_History_8 Insurance_History_9 \\\n", + "0 1 1 2 \n", + "1 1 3 2 \n", + "2 3 2 3 \n", + "3 3 2 3 \n", + "4 3 2 3 \n", + "\n", + " Family_Hist_1 Family_Hist_2 Family_Hist_3 Family_Hist_4 Family_Hist_5 \\\n", + "0 2 NaN 0.598039 NaN 0.526786 \n", + "1 2 0.188406 NaN 0.084507 NaN \n", + "2 3 0.304348 NaN 0.225352 NaN \n", + "3 3 0.420290 NaN 0.352113 NaN \n", + "4 2 0.463768 NaN 0.408451 NaN \n", + "\n", + " Medical_History_1 Medical_History_2 Medical_History_3 Medical_History_4 \\\n", + "0 4.0 112 2 1 \n", + "1 5.0 412 2 1 \n", + "2 10.0 3 2 2 \n", + "3 0.0 350 2 2 \n", + "4 NaN 162 2 2 \n", + "\n", + " Medical_History_5 Medical_History_6 Medical_History_7 Medical_History_8 \\\n", + "0 1 3 2 2 \n", + "1 1 3 2 2 \n", + "2 1 3 2 2 \n", + "3 1 3 2 2 \n", + "4 1 3 2 2 \n", + "\n", + " Medical_History_9 Medical_History_10 Medical_History_11 \\\n", + "0 1 NaN 3 \n", + "1 1 NaN 3 \n", + "2 2 NaN 3 \n", + "3 2 NaN 3 \n", + "4 2 NaN 3 \n", + "\n", + " Medical_History_12 Medical_History_13 Medical_History_14 \\\n", + "0 2 3 3 \n", + "1 2 3 3 \n", + "2 2 3 3 \n", + "3 2 3 3 \n", + "4 2 3 3 \n", + "\n", + " Medical_History_15 Medical_History_16 Medical_History_17 \\\n", + "0 240.0 3 3 \n", + "1 0.0 1 3 \n", + "2 NaN 1 3 \n", + "3 NaN 1 3 \n", + "4 NaN 1 3 \n", + "\n", + " Medical_History_18 Medical_History_19 Medical_History_20 \\\n", + "0 1 1 2 \n", + "1 1 1 2 \n", + "2 1 1 2 \n", + "3 1 1 2 \n", + "4 1 1 2 \n", + "\n", + " Medical_History_21 Medical_History_22 Medical_History_23 \\\n", + "0 1 2 3 \n", + "1 1 2 3 \n", + "2 1 2 3 \n", + "3 2 2 3 \n", + "4 1 2 3 \n", + "\n", + " Medical_History_24 Medical_History_25 Medical_History_26 \\\n", + "0 NaN 1 3 \n", + "1 NaN 1 3 \n", + "2 NaN 2 2 \n", + "3 NaN 1 3 \n", + "4 NaN 2 2 \n", + "\n", + " Medical_History_27 Medical_History_28 Medical_History_29 \\\n", + "0 3 1 3 \n", + "1 3 1 3 \n", + "2 3 1 3 \n", + "3 3 1 3 \n", + "4 3 1 3 \n", + "\n", + " Medical_History_30 Medical_History_31 Medical_History_32 \\\n", + "0 2 3 NaN \n", + "1 2 3 NaN \n", + "2 2 3 NaN \n", + "3 2 3 NaN \n", + "4 2 3 NaN \n", + "\n", + " Medical_History_33 Medical_History_34 Medical_History_35 \\\n", + "0 1 3 1 \n", + "1 3 1 1 \n", + "2 3 3 1 \n", + "3 3 3 1 \n", + "4 3 3 1 \n", + "\n", + " Medical_History_36 Medical_History_37 Medical_History_38 \\\n", + "0 2 2 1 \n", + "1 2 2 1 \n", + "2 3 2 1 \n", + "3 2 2 1 \n", + "4 3 2 1 \n", + "\n", + " Medical_History_39 Medical_History_40 Medical_History_41 \\\n", + "0 3 3 3 \n", + "1 3 3 1 \n", + "2 3 3 1 \n", + "3 3 3 1 \n", + "4 3 3 1 \n", + "\n", + " Medical_Keyword_1 Medical_Keyword_2 Medical_Keyword_3 Medical_Keyword_4 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_5 Medical_Keyword_6 Medical_Keyword_7 Medical_Keyword_8 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_9 Medical_Keyword_10 Medical_Keyword_11 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_12 Medical_Keyword_13 Medical_Keyword_14 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_15 Medical_Keyword_16 Medical_Keyword_17 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_18 Medical_Keyword_19 Medical_Keyword_20 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_21 Medical_Keyword_22 Medical_Keyword_23 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_24 Medical_Keyword_25 Medical_Keyword_26 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_27 Medical_Keyword_28 Medical_Keyword_29 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_30 Medical_Keyword_31 Medical_Keyword_32 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 1 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_33 Medical_Keyword_34 Medical_Keyword_35 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_36 Medical_Keyword_37 Medical_Keyword_38 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_39 Medical_Keyword_40 Medical_Keyword_41 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_42 Medical_Keyword_43 Medical_Keyword_44 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_45 Medical_Keyword_46 Medical_Keyword_47 \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " Medical_Keyword_48 Response \n", + "0 0 8 \n", + "1 0 4 \n", + "2 0 8 \n", + "3 0 8 \n", + "4 0 8 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZAÇÃO DO DATASET\n", + "dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "129b50d4-27e3-4d49-92d6-c41791f9fe92", + "metadata": {}, + "outputs": [], + "source": [ + "# FUNÇÃO PARA VERIFICAR O SHAPE DO DATASET, A EXISTÊNCIA DE VALORES NULOS E SUA QUANTIDADE\n", + "\n", + "def valuesDataset(df):\n", + " print('\\033[1mTamanho do dataset\\033[0m -> {} x {}'.format(df.shape[0], df.shape[1]))\n", + " print('\\033[1mExiste valores faltantes:\\033[0m {}'.format(df.isnull().values.any()))\n", + " print('\\033[1mQuantidade de valores faltantes:\\033[0m {}'.format(df.isnull().values.sum()))\n", + " print('\\033[1mPorcentagem dos valores faltantes:\\033[0m {:.3}%'.format((df.isnull().values.sum()/(df.shape[0]*df.shape[1]) * 100))) " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "aafbfb9b-cb61-452b-8a22-5b1347602166", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mTamanho do dataset\u001b[0m -> 59381 x 128\n", + "\u001b[1mExiste valores faltantes:\u001b[0m True\n", + "\u001b[1mQuantidade de valores faltantes:\u001b[0m 393103\n", + "\u001b[1mPorcentagem dos valores faltantes:\u001b[0m 5.17%\n" + ] + } + ], + "source": [ + "# FAZENDO A CHAMADA DA FUNÇÃO\n", + "valuesDataset(dataset)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "00cdf78c-789a-4aae-9c47-adc57bc7ff62", + "metadata": {}, + "outputs": [], + "source": [ + "# FUNÇÃO PARA CALCULAR A PORCENTAGEM DE VALORES FALTANTES DE CADA COLUNA E ORGANIZAR EM UM DATAFRAME DE ORDEM DECRESCENTE\n", + "\n", + "def missing_percentage(df): \n", + " total = df.isnull().sum().sort_values(ascending = False)[df.isnull().sum().sort_values(ascending = False) != 0] \n", + " percent = round(df.isnull().sum().sort_values(ascending = False)/len(df)*100,2)[round(df.isnull().sum().sort_values(ascending = False)/len(df)*100,2) != 0] \n", + " return pd.concat([total, percent], axis=1, keys=['Total','Percent'])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f9a38aa9-1297-4d2e-b6d7-17d2fd94503d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TotalPercent
Medical_History_105882499.06
Medical_History_325827498.14
Medical_History_245558093.60
Medical_History_154459675.10
Family_Hist_54181170.41
Family_Hist_33424157.66
Family_Hist_22865648.26
Insurance_History_52539642.77
Family_Hist_41918432.31
Employment_Info_61085418.28
Medical_History_1888914.97
Employment_Info_4677911.42
Employment_Info_1190.03
\n", + "
" + ], + "text/plain": [ + " Total Percent\n", + "Medical_History_10 58824 99.06\n", + "Medical_History_32 58274 98.14\n", + "Medical_History_24 55580 93.60\n", + "Medical_History_15 44596 75.10\n", + "Family_Hist_5 41811 70.41\n", + "Family_Hist_3 34241 57.66\n", + "Family_Hist_2 28656 48.26\n", + "Insurance_History_5 25396 42.77\n", + "Family_Hist_4 19184 32.31\n", + "Employment_Info_6 10854 18.28\n", + "Medical_History_1 8889 14.97\n", + "Employment_Info_4 6779 11.42\n", + "Employment_Info_1 19 0.03" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# CHAMANDO FUNÇÃO\n", + "df_missing = missing_percentage(dataset)\n", + "\n", + "# VISUALIZANDO ATRIBUTOS COM DADOS FALTANTES E SUAS RESPECTIVAS PORCENTAGENS\n", + "df_missing" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "11844316-9cc2-4b85-85d8-fc29d9124d68", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO LISTAS COM IDENTIFICAÇÃO DOS ATRIBUTOS COM DADOS FALTANTES QUE SERÃO MANTIDOS E EXCLUIDOS COM LIMIAR DE 70%\n", + "# ATRIBUTOS COM MAIS DE 70% DOS DADOS FALTANTES SERÃO EXCLUÍDOS\n", + "\n", + "missing_values_drop = df_missing[df_missing.Percent >= 70].index.tolist()\n", + "missing_values_keep = df_missing[df_missing.Percent < 70].index.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e88902b7-288c-4b57-8736-237dd2d2d8c6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countmeanstdmin25%50%75%max
Family_Hist_325140.00.4977370.1401870.00.4019610.5196080.5980391.000000
Family_Hist_230725.00.4745500.1549590.00.3623190.4637680.5797101.000000
Insurance_History_533985.00.0017330.0073380.00.0004000.0009730.0020001.000000
Family_Hist_440197.00.4448900.1630120.00.3239440.4225350.5633800.943662
Employment_Info_648527.00.3614690.3495510.00.0600000.2500000.5500001.000000
Medical_History_150492.07.96217213.0276970.02.0000004.0000009.000000240.000000
Employment_Info_452602.00.0062830.0328160.00.0000000.0000000.0000001.000000
Employment_Info_159362.00.0775820.0823470.00.0350000.0600000.1000001.000000
\n", + "
" + ], + "text/plain": [ + " count mean std min 25% 50% \\\n", + "Family_Hist_3 25140.0 0.497737 0.140187 0.0 0.401961 0.519608 \n", + "Family_Hist_2 30725.0 0.474550 0.154959 0.0 0.362319 0.463768 \n", + "Insurance_History_5 33985.0 0.001733 0.007338 0.0 0.000400 0.000973 \n", + "Family_Hist_4 40197.0 0.444890 0.163012 0.0 0.323944 0.422535 \n", + "Employment_Info_6 48527.0 0.361469 0.349551 0.0 0.060000 0.250000 \n", + "Medical_History_1 50492.0 7.962172 13.027697 0.0 2.000000 4.000000 \n", + "Employment_Info_4 52602.0 0.006283 0.032816 0.0 0.000000 0.000000 \n", + "Employment_Info_1 59362.0 0.077582 0.082347 0.0 0.035000 0.060000 \n", + "\n", + " 75% max \n", + "Family_Hist_3 0.598039 1.000000 \n", + "Family_Hist_2 0.579710 1.000000 \n", + "Insurance_History_5 0.002000 1.000000 \n", + "Family_Hist_4 0.563380 0.943662 \n", + "Employment_Info_6 0.550000 1.000000 \n", + "Medical_History_1 9.000000 240.000000 \n", + "Employment_Info_4 0.000000 1.000000 \n", + "Employment_Info_1 0.100000 1.000000 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ATRIBUTOS COM VALORES FALTANTES ENTRE 70 E 0.02% DO TOTAL\n", + "dataset[missing_values_keep].describe().T" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a3a82275-3618-47ad-bbc2-7bd332fcf8e7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 59381 entries, 0 to 59380\n", + "Data columns (total 128 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Id 59381 non-null int64 \n", + " 1 Product_Info_1 59381 non-null int64 \n", + " 2 Product_Info_2 59381 non-null object \n", + " 3 Product_Info_3 59381 non-null int64 \n", + " 4 Product_Info_4 59381 non-null float64\n", + " 5 Product_Info_5 59381 non-null int64 \n", + " 6 Product_Info_6 59381 non-null int64 \n", + " 7 Product_Info_7 59381 non-null int64 \n", + " 8 Ins_Age 59381 non-null float64\n", + " 9 Ht 59381 non-null float64\n", + " 10 Wt 59381 non-null float64\n", + " 11 BMI 59381 non-null float64\n", + " 12 Employment_Info_1 59362 non-null float64\n", + " 13 Employment_Info_2 59381 non-null int64 \n", + " 14 Employment_Info_3 59381 non-null int64 \n", + " 15 Employment_Info_4 52602 non-null float64\n", + " 16 Employment_Info_5 59381 non-null int64 \n", + " 17 Employment_Info_6 48527 non-null float64\n", + " 18 InsuredInfo_1 59381 non-null int64 \n", + " 19 InsuredInfo_2 59381 non-null int64 \n", + " 20 InsuredInfo_3 59381 non-null int64 \n", + " 21 InsuredInfo_4 59381 non-null int64 \n", + " 22 InsuredInfo_5 59381 non-null int64 \n", + " 23 InsuredInfo_6 59381 non-null int64 \n", + " 24 InsuredInfo_7 59381 non-null int64 \n", + " 25 Insurance_History_1 59381 non-null int64 \n", + " 26 Insurance_History_2 59381 non-null int64 \n", + " 27 Insurance_History_3 59381 non-null int64 \n", + " 28 Insurance_History_4 59381 non-null int64 \n", + " 29 Insurance_History_5 33985 non-null float64\n", + " 30 Insurance_History_7 59381 non-null int64 \n", + " 31 Insurance_History_8 59381 non-null int64 \n", + " 32 Insurance_History_9 59381 non-null int64 \n", + " 33 Family_Hist_1 59381 non-null int64 \n", + " 34 Family_Hist_2 30725 non-null float64\n", + " 35 Family_Hist_3 25140 non-null float64\n", + " 36 Family_Hist_4 40197 non-null float64\n", + " 37 Family_Hist_5 17570 non-null float64\n", + " 38 Medical_History_1 50492 non-null float64\n", + " 39 Medical_History_2 59381 non-null int64 \n", + " 40 Medical_History_3 59381 non-null int64 \n", + " 41 Medical_History_4 59381 non-null int64 \n", + " 42 Medical_History_5 59381 non-null int64 \n", + " 43 Medical_History_6 59381 non-null int64 \n", + " 44 Medical_History_7 59381 non-null int64 \n", + " 45 Medical_History_8 59381 non-null int64 \n", + " 46 Medical_History_9 59381 non-null int64 \n", + " 47 Medical_History_10 557 non-null float64\n", + " 48 Medical_History_11 59381 non-null int64 \n", + " 49 Medical_History_12 59381 non-null int64 \n", + " 50 Medical_History_13 59381 non-null int64 \n", + " 51 Medical_History_14 59381 non-null int64 \n", + " 52 Medical_History_15 14785 non-null float64\n", + " 53 Medical_History_16 59381 non-null int64 \n", + " 54 Medical_History_17 59381 non-null int64 \n", + " 55 Medical_History_18 59381 non-null int64 \n", + " 56 Medical_History_19 59381 non-null int64 \n", + " 57 Medical_History_20 59381 non-null int64 \n", + " 58 Medical_History_21 59381 non-null int64 \n", + " 59 Medical_History_22 59381 non-null int64 \n", + " 60 Medical_History_23 59381 non-null int64 \n", + " 61 Medical_History_24 3801 non-null float64\n", + " 62 Medical_History_25 59381 non-null int64 \n", + " 63 Medical_History_26 59381 non-null int64 \n", + " 64 Medical_History_27 59381 non-null int64 \n", + " 65 Medical_History_28 59381 non-null int64 \n", + " 66 Medical_History_29 59381 non-null int64 \n", + " 67 Medical_History_30 59381 non-null int64 \n", + " 68 Medical_History_31 59381 non-null int64 \n", + " 69 Medical_History_32 1107 non-null float64\n", + " 70 Medical_History_33 59381 non-null int64 \n", + " 71 Medical_History_34 59381 non-null int64 \n", + " 72 Medical_History_35 59381 non-null int64 \n", + " 73 Medical_History_36 59381 non-null int64 \n", + " 74 Medical_History_37 59381 non-null int64 \n", + " 75 Medical_History_38 59381 non-null int64 \n", + " 76 Medical_History_39 59381 non-null int64 \n", + " 77 Medical_History_40 59381 non-null int64 \n", + " 78 Medical_History_41 59381 non-null int64 \n", + " 79 Medical_Keyword_1 59381 non-null int64 \n", + " 80 Medical_Keyword_2 59381 non-null int64 \n", + " 81 Medical_Keyword_3 59381 non-null int64 \n", + " 82 Medical_Keyword_4 59381 non-null int64 \n", + " 83 Medical_Keyword_5 59381 non-null int64 \n", + " 84 Medical_Keyword_6 59381 non-null int64 \n", + " 85 Medical_Keyword_7 59381 non-null int64 \n", + " 86 Medical_Keyword_8 59381 non-null int64 \n", + " 87 Medical_Keyword_9 59381 non-null int64 \n", + " 88 Medical_Keyword_10 59381 non-null int64 \n", + " 89 Medical_Keyword_11 59381 non-null int64 \n", + " 90 Medical_Keyword_12 59381 non-null int64 \n", + " 91 Medical_Keyword_13 59381 non-null int64 \n", + " 92 Medical_Keyword_14 59381 non-null int64 \n", + " 93 Medical_Keyword_15 59381 non-null int64 \n", + " 94 Medical_Keyword_16 59381 non-null int64 \n", + " 95 Medical_Keyword_17 59381 non-null int64 \n", + " 96 Medical_Keyword_18 59381 non-null int64 \n", + " 97 Medical_Keyword_19 59381 non-null int64 \n", + " 98 Medical_Keyword_20 59381 non-null int64 \n", + " 99 Medical_Keyword_21 59381 non-null int64 \n", + " 100 Medical_Keyword_22 59381 non-null int64 \n", + " 101 Medical_Keyword_23 59381 non-null int64 \n", + " 102 Medical_Keyword_24 59381 non-null int64 \n", + " 103 Medical_Keyword_25 59381 non-null int64 \n", + " 104 Medical_Keyword_26 59381 non-null int64 \n", + " 105 Medical_Keyword_27 59381 non-null int64 \n", + " 106 Medical_Keyword_28 59381 non-null int64 \n", + " 107 Medical_Keyword_29 59381 non-null int64 \n", + " 108 Medical_Keyword_30 59381 non-null int64 \n", + " 109 Medical_Keyword_31 59381 non-null int64 \n", + " 110 Medical_Keyword_32 59381 non-null int64 \n", + " 111 Medical_Keyword_33 59381 non-null int64 \n", + " 112 Medical_Keyword_34 59381 non-null int64 \n", + " 113 Medical_Keyword_35 59381 non-null int64 \n", + " 114 Medical_Keyword_36 59381 non-null int64 \n", + " 115 Medical_Keyword_37 59381 non-null int64 \n", + " 116 Medical_Keyword_38 59381 non-null int64 \n", + " 117 Medical_Keyword_39 59381 non-null int64 \n", + " 118 Medical_Keyword_40 59381 non-null int64 \n", + " 119 Medical_Keyword_41 59381 non-null int64 \n", + " 120 Medical_Keyword_42 59381 non-null int64 \n", + " 121 Medical_Keyword_43 59381 non-null int64 \n", + " 122 Medical_Keyword_44 59381 non-null int64 \n", + " 123 Medical_Keyword_45 59381 non-null int64 \n", + " 124 Medical_Keyword_46 59381 non-null int64 \n", + " 125 Medical_Keyword_47 59381 non-null int64 \n", + " 126 Medical_Keyword_48 59381 non-null int64 \n", + " 127 Response 59381 non-null int64 \n", + "dtypes: float64(18), int64(109), object(1)\n", + "memory usage: 58.0+ MB\n" + ] + } + ], + "source": [ + "# VISUALIZANDO INFORMAÇÕES INDIVIDUAIS DE CADA ATRIBUTO\n", + "dataset.info(verbose=True, show_counts=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7665736a-2385-4e89-addf-e2500e56ad72", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Column TypeCount
0int64109
1float6418
2object1
\n", + "
" + ], + "text/plain": [ + " Column Type Count\n", + "0 int64 109\n", + "1 float64 18\n", + "2 object 1" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# FAZENDO O AGRUPAMENTO DOS TIPOS DE VARIÁVEIS DE CADA TRIBUTO\n", + "\n", + "dtype_data = dataset.dtypes.reset_index()\n", + "dtype_data.columns = [\"Count\", \"Column Type\"]\n", + "dtype_data.groupby(\"Column Type\").aggregate('count').reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "9c8276d9-e547-456e-aee4-391825403505", + "metadata": {}, + "outputs": [], + "source": [ + "# FUNÇÃO PARA FAZER A CONTAGEM DE QUANTOS VALORES ÚNICOS TEM CADA ATRIBUTO\n", + "\n", + "def uniqueValues(df):\n", + " df = df.drop(columns=['Response','Id'], axis=1)\n", + " count_values = {}\n", + " features_group = {}\n", + " two_values = []\n", + " tree_values = []\n", + " more_values = [] \n", + " \n", + " for column in df.columns:\n", + " unique_values = df[column].unique()\n", + " len_unique = len(unique_values)\n", + " count_values[column] = len_unique\n", + " \n", + " if len_unique == 2:\n", + " two_values.append(column) \n", + " elif len_unique == 3: \n", + " tree_values.append(column)\n", + " else: \n", + " more_values.append(column)\n", + " \n", + " features_group[2] = two_values\n", + " features_group[3] = tree_values\n", + " features_group['more'] = more_values \n", + " features_group = pd.DataFrame(data=features_group.items(), columns=['unique_values', 'features']) \n", + " \n", + " df_unique = pd.DataFrame(data=count_values.items(), columns=['Features', 'Unique_values'])\n", + " df_unique.sort_values(by='Unique_values', ascending=True, inplace=True)\n", + " df_unique.reset_index(inplace=True, drop=True)\n", + " df_unique = df_unique\n", + " return df_unique, features_group" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "698b565c-d5d8-46f3-b50f-b4e4ca0bbe1d", + "metadata": {}, + "outputs": [], + "source": [ + "# CHAMANDO A FUNÇÃO\n", + "df_unique_values, df_group = uniqueValues(dataset)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "bad1da7f-6b5f-4220-82b1-342b1dc3ea5e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
FeaturesProduct_Info_1Medical_Keyword_20Medical_Keyword_19Medical_Keyword_18Medical_Keyword_17Medical_Keyword_16Medical_Keyword_15Medical_Keyword_14Medical_Keyword_13Medical_Keyword_12Medical_Keyword_11Medical_Keyword_21Medical_Keyword_10Medical_Keyword_8Medical_Keyword_7Medical_Keyword_6Medical_Keyword_5Medical_Keyword_4Medical_Keyword_3Medical_Keyword_2Medical_Keyword_1Medical_History_38Medical_History_33Medical_Keyword_9Medical_Keyword_47Medical_Keyword_22Medical_Keyword_24Medical_Keyword_46Medical_Keyword_45Medical_Keyword_44Medical_Keyword_43Medical_Keyword_42Medical_Keyword_41Medical_Keyword_40Medical_Keyword_39Medical_Keyword_38Medical_Keyword_37Medical_Keyword_23Medical_Keyword_36Medical_Keyword_34Medical_Keyword_33Medical_Keyword_32Medical_Keyword_31Medical_Keyword_30Medical_Keyword_29Medical_Keyword_28Medical_Keyword_27Medical_Keyword_26Medical_Keyword_25Medical_Keyword_35Medical_History_22Medical_Keyword_48InsuredInfo_4Product_Info_5Product_Info_6Employment_Info_3Employment_Info_5Medical_History_4InsuredInfo_2InsuredInfo_5InsuredInfo_6InsuredInfo_7Insurance_History_1Medical_History_3Medical_History_5Medical_History_16Medical_History_6Medical_History_7Family_Hist_1Insurance_History_9Insurance_History_2Insurance_History_7Insurance_History_4Insurance_History_3Medical_History_8InsuredInfo_1Product_Info_7Insurance_History_8Medical_History_9Medical_History_26Medical_History_41Medical_History_17Medical_History_18Medical_History_19Medical_History_20Medical_History_21Medical_History_14Medical_History_23Medical_History_25Medical_History_27Medical_History_28Medical_History_29Medical_History_30Medical_History_31Medical_History_13Medical_History_40Medical_History_34Medical_History_35Medical_History_12Medical_History_36Medical_History_11Medical_History_37Medical_History_39InsuredInfo_3Product_Info_2Product_Info_3Employment_Info_2HtIns_AgeFamily_Hist_2Family_Hist_4Family_Hist_3Family_Hist_5Medical_History_32Medical_History_10Medical_History_1Medical_History_24Medical_History_15WtMedical_History_2Employment_Info_4Employment_Info_6Product_Info_4Employment_Info_1Insurance_History_5BMI
Unique_values222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333311193436396569699191961041722282423005798729931491193722663256
\n", + "
" + ], + "text/plain": [ + " 0 1 2 \\\n", + "Features Product_Info_1 Medical_Keyword_20 Medical_Keyword_19 \n", + "Unique_values 2 2 2 \n", + "\n", + " 3 4 5 \\\n", + "Features Medical_Keyword_18 Medical_Keyword_17 Medical_Keyword_16 \n", + "Unique_values 2 2 2 \n", + "\n", + " 6 7 8 \\\n", + "Features Medical_Keyword_15 Medical_Keyword_14 Medical_Keyword_13 \n", + "Unique_values 2 2 2 \n", + "\n", + " 9 10 11 \\\n", + "Features Medical_Keyword_12 Medical_Keyword_11 Medical_Keyword_21 \n", + "Unique_values 2 2 2 \n", + "\n", + " 12 13 14 \\\n", + "Features Medical_Keyword_10 Medical_Keyword_8 Medical_Keyword_7 \n", + "Unique_values 2 2 2 \n", + "\n", + " 15 16 17 \\\n", + "Features Medical_Keyword_6 Medical_Keyword_5 Medical_Keyword_4 \n", + "Unique_values 2 2 2 \n", + "\n", + " 18 19 20 \\\n", + "Features Medical_Keyword_3 Medical_Keyword_2 Medical_Keyword_1 \n", + "Unique_values 2 2 2 \n", + "\n", + " 21 22 23 \\\n", + "Features Medical_History_38 Medical_History_33 Medical_Keyword_9 \n", + "Unique_values 2 2 2 \n", + "\n", + " 24 25 26 \\\n", + "Features Medical_Keyword_47 Medical_Keyword_22 Medical_Keyword_24 \n", + "Unique_values 2 2 2 \n", + "\n", + " 27 28 29 \\\n", + "Features Medical_Keyword_46 Medical_Keyword_45 Medical_Keyword_44 \n", + "Unique_values 2 2 2 \n", + "\n", + " 30 31 32 \\\n", + "Features Medical_Keyword_43 Medical_Keyword_42 Medical_Keyword_41 \n", + "Unique_values 2 2 2 \n", + "\n", + " 33 34 35 \\\n", + "Features Medical_Keyword_40 Medical_Keyword_39 Medical_Keyword_38 \n", + "Unique_values 2 2 2 \n", + "\n", + " 36 37 38 \\\n", + "Features Medical_Keyword_37 Medical_Keyword_23 Medical_Keyword_36 \n", + "Unique_values 2 2 2 \n", + "\n", + " 39 40 41 \\\n", + "Features Medical_Keyword_34 Medical_Keyword_33 Medical_Keyword_32 \n", + "Unique_values 2 2 2 \n", + "\n", + " 42 43 44 \\\n", + "Features Medical_Keyword_31 Medical_Keyword_30 Medical_Keyword_29 \n", + "Unique_values 2 2 2 \n", + "\n", + " 45 46 47 \\\n", + "Features Medical_Keyword_28 Medical_Keyword_27 Medical_Keyword_26 \n", + "Unique_values 2 2 2 \n", + "\n", + " 48 49 50 \\\n", + "Features Medical_Keyword_25 Medical_Keyword_35 Medical_History_22 \n", + "Unique_values 2 2 2 \n", + "\n", + " 51 52 53 \\\n", + "Features Medical_Keyword_48 InsuredInfo_4 Product_Info_5 \n", + "Unique_values 2 2 2 \n", + "\n", + " 54 55 56 \\\n", + "Features Product_Info_6 Employment_Info_3 Employment_Info_5 \n", + "Unique_values 2 2 2 \n", + "\n", + " 57 58 59 60 \\\n", + "Features Medical_History_4 InsuredInfo_2 InsuredInfo_5 InsuredInfo_6 \n", + "Unique_values 2 2 2 2 \n", + "\n", + " 61 62 63 \\\n", + "Features InsuredInfo_7 Insurance_History_1 Medical_History_3 \n", + "Unique_values 2 2 3 \n", + "\n", + " 64 65 66 \\\n", + "Features Medical_History_5 Medical_History_16 Medical_History_6 \n", + "Unique_values 3 3 3 \n", + "\n", + " 67 68 69 \\\n", + "Features Medical_History_7 Family_Hist_1 Insurance_History_9 \n", + "Unique_values 3 3 3 \n", + "\n", + " 70 71 72 \\\n", + "Features Insurance_History_2 Insurance_History_7 Insurance_History_4 \n", + "Unique_values 3 3 3 \n", + "\n", + " 73 74 75 \\\n", + "Features Insurance_History_3 Medical_History_8 InsuredInfo_1 \n", + "Unique_values 3 3 3 \n", + "\n", + " 76 77 78 \\\n", + "Features Product_Info_7 Insurance_History_8 Medical_History_9 \n", + "Unique_values 3 3 3 \n", + "\n", + " 79 80 81 \\\n", + "Features Medical_History_26 Medical_History_41 Medical_History_17 \n", + "Unique_values 3 3 3 \n", + "\n", + " 82 83 84 \\\n", + "Features Medical_History_18 Medical_History_19 Medical_History_20 \n", + "Unique_values 3 3 3 \n", + "\n", + " 85 86 87 \\\n", + "Features Medical_History_21 Medical_History_14 Medical_History_23 \n", + "Unique_values 3 3 3 \n", + "\n", + " 88 89 90 \\\n", + "Features Medical_History_25 Medical_History_27 Medical_History_28 \n", + "Unique_values 3 3 3 \n", + "\n", + " 91 92 93 \\\n", + "Features Medical_History_29 Medical_History_30 Medical_History_31 \n", + "Unique_values 3 3 3 \n", + "\n", + " 94 95 96 \\\n", + "Features Medical_History_13 Medical_History_40 Medical_History_34 \n", + "Unique_values 3 3 3 \n", + "\n", + " 97 98 99 \\\n", + "Features Medical_History_35 Medical_History_12 Medical_History_36 \n", + "Unique_values 3 3 3 \n", + "\n", + " 100 101 102 \\\n", + "Features Medical_History_11 Medical_History_37 Medical_History_39 \n", + "Unique_values 3 3 3 \n", + "\n", + " 103 104 105 \\\n", + "Features InsuredInfo_3 Product_Info_2 Product_Info_3 \n", + "Unique_values 11 19 34 \n", + "\n", + " 106 107 108 109 110 \\\n", + "Features Employment_Info_2 Ht Ins_Age Family_Hist_2 Family_Hist_4 \n", + "Unique_values 36 39 65 69 69 \n", + "\n", + " 111 112 113 \\\n", + "Features Family_Hist_3 Family_Hist_5 Medical_History_32 \n", + "Unique_values 91 91 96 \n", + "\n", + " 114 115 116 \\\n", + "Features Medical_History_10 Medical_History_1 Medical_History_24 \n", + "Unique_values 104 172 228 \n", + "\n", + " 117 118 119 120 \\\n", + "Features Medical_History_15 Wt Medical_History_2 Employment_Info_4 \n", + "Unique_values 242 300 579 872 \n", + "\n", + " 121 122 123 \\\n", + "Features Employment_Info_6 Product_Info_4 Employment_Info_1 \n", + "Unique_values 993 1491 1937 \n", + "\n", + " 124 125 \n", + "Features Insurance_History_5 BMI \n", + "Unique_values 2266 3256 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO QUANTOS VALORES ÚNICOS TEM CADA ATRIBUTO\n", + "df_unique_values.T" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ba10d10d-b5f5-49de-b8ed-6ba56db18e20", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Features
Unique_values
263
340
111
191
341
361
391
651
692
912
961
1041
1721
2281
2421
3001
5791
8721
9931
14911
19371
22661
32561
\n", + "
" + ], + "text/plain": [ + " Features\n", + "Unique_values \n", + "2 63\n", + "3 40\n", + "11 1\n", + "19 1\n", + "34 1\n", + "36 1\n", + "39 1\n", + "65 1\n", + "69 2\n", + "91 2\n", + "96 1\n", + "104 1\n", + "172 1\n", + "228 1\n", + "242 1\n", + "300 1\n", + "579 1\n", + "872 1\n", + "993 1\n", + "1491 1\n", + "1937 1\n", + "2266 1\n", + "3256 1" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# FAZENDO AGRUPAMENTO DOS ATRIBUTOS PELA QUANTIDADE DE VALORES ÚNICOS\n", + "df_unique_values.groupby('Unique_values').count()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "0d6753eb-60d3-40e1-8826-6bd1f28e4c45", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO UMA LISTA INDIVIDUAL COM O NOME DOS ATRIBUTOS COM 2 VALORES ÚNICOS, 3 VALORES ÚNICOS E MAIS DE 3 VALORES ÚNICOS\n", + "\n", + "two_values = df_group[df_group.unique_values == 2]['features'].item()\n", + "tree_values = df_group[df_group.unique_values == 3]['features'].item()\n", + "more_values = df_group[df_group.unique_values == 'more']['features'].item()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "253d7c85-db6f-4d07-97c7-3a3f1eafde66", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Não existe valores faltantes na lista: \"two_values\"\n", + "Não existe valores faltantes na lista: \"tree_values\n", + "Existe valores faltantes na lista \"more_values\"\n" + ] + } + ], + "source": [ + "# VERIFICANDO A EXISTÊNCIA DE VALORES FALTANTES EM CADA UMA DAS LISTA DE CONTAGEM DE VALORES ÚNICOS\n", + "\n", + "for row in df_group.itertuples():\n", + " if set(row.features).intersection(missing_values_keep):\n", + " print('Existe valores faltantes na lista \"two_values\"') if row.unique_values==2 else print('Não existe valores faltantes na lista: \"two_values\"')\n", + " print('Existe valores faltantes na lista \"tree_values\"') if row.unique_values==3 else print('Não existe valores faltantes na lista: \"tree_values')\n", + " print('Existe valores faltantes na lista \"more_values\"') if row.unique_values=='more' else print('Não existe valores faltantes na lista: \"more_values')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "530e46d9-83d8-4d77-98f1-77f017b7b1ea", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# PLOTANDO A QUANTIDADE DE AMOSTRAS POR CLASSE\n", + "\n", + "plt.figure(figsize=(15,6))\n", + "sns.countplot(data=dataset, x='Response', palette = \"OrRd\")\n", + "plt.box(False)\n", + "plt.xlabel('Classes', fontsize = 11)\n", + "plt.ylabel('Quantidade', fontsize = 11)\n", + "plt.title('Contagem de Classes\\n')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "07815c68-be10-4d76-bec8-ba1df8660a8f", + "metadata": {}, + "outputs": [], + "source": [ + "# MAIORES CORRELAÇÕES POSITIVAS E NEGATIVAS EM RELAÇÃO A VARIÁVEL ALVO\n", + "\n", + "corr_positivo = dataset.corr()['Response'].sort_values(ascending=False)[0:10]\n", + "corr_negative = dataset.corr()['Response'].sort_values(ascending=True)[0:10]\n", + "correlacao = pd.concat([corr_positivo, corr_negative], axis=1, keys=['Corr Positiva','Corr Negativa'])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "4a2a2e09-1201-4a67-a3ad-af13a7078cbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Corr PositivaCorr Negativa
Response1.000000NaN
Medical_History_230.286584NaN
Medical_History_150.277311NaN
Medical_History_40.239896NaN
Medical_History_390.220176NaN
Product_Info_40.202434NaN
Medical_History_60.159230NaN
Medical_History_320.144536NaN
Medical_History_130.134863NaN
Medical_History_400.131519NaN
BMINaN-0.381601
WtNaN-0.351395
Medical_Keyword_15NaN-0.259169
Medical_Keyword_3NaN-0.257706
Ins_AgeNaN-0.209610
Medical_Keyword_48NaN-0.159557
Medical_History_16NaN-0.137542
Insurance_History_2NaN-0.122196
Employment_Info_3NaN-0.116408
Medical_History_30NaN-0.114870
\n", + "
" + ], + "text/plain": [ + " Corr Positiva Corr Negativa\n", + "Response 1.000000 NaN\n", + "Medical_History_23 0.286584 NaN\n", + "Medical_History_15 0.277311 NaN\n", + "Medical_History_4 0.239896 NaN\n", + "Medical_History_39 0.220176 NaN\n", + "Product_Info_4 0.202434 NaN\n", + "Medical_History_6 0.159230 NaN\n", + "Medical_History_32 0.144536 NaN\n", + "Medical_History_13 0.134863 NaN\n", + "Medical_History_40 0.131519 NaN\n", + "BMI NaN -0.381601\n", + "Wt NaN -0.351395\n", + "Medical_Keyword_15 NaN -0.259169\n", + "Medical_Keyword_3 NaN -0.257706\n", + "Ins_Age NaN -0.209610\n", + "Medical_Keyword_48 NaN -0.159557\n", + "Medical_History_16 NaN -0.137542\n", + "Insurance_History_2 NaN -0.122196\n", + "Employment_Info_3 NaN -0.116408\n", + "Medical_History_30 NaN -0.114870" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO CORRELAÇÕES\n", + "correlacao" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e9e4f5ce-2a5f-4913-806b-9b978ba644e6", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# PLOTANDO GRÁFICO PARA VISUALIZAÇÃO DAS CORRELAÇÕES COM A CLASSE\n", + "\n", + "dataset.corrwith(dataset.Response).plot.bar(figsize = (30, 8), \n", + " title = \"Correlação das Variáveis de Entrada com a Classe de Saída\", \n", + " fontsize = 8,\n", + " grid = True, \n", + " legend=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "038513f1-43e0-47e1-97ef-b76ffa4016ec", + "metadata": {}, + "source": [ + "#
ENGENHARIA DE ATRIBUTOS" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b2dd9a1d-a8c2-4dc9-9a39-9a873a7cf34a", + "metadata": {}, + "outputs": [], + "source": [ + "# SEPARANDO OS ATRIBUTOS DA VARIÁVEL ALVO E REMOVENDO ATRIBUTOS COM VALORES FALTANTES ACIMA DE 70%\n", + "\n", + "x = dataset.drop(columns = missing_values_drop + ['Response', 'Id'], axis=1)\n", + "y_train = dataset[['Response']].values.ravel()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "783aa71b-e812-49b0-823a-b1f39f4b4295", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Product_Info_2']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO ATRIBUTOS DO TIPO 'OBJECT' DO DATASET\n", + "list(x.select_dtypes(include=['object']).columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "5388b083-5861-43d4-9f92-6a58dc04318a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['D3', 'A1', 'E1', 'D4', 'D2', 'A8', 'A2', 'D1', 'A7', 'A6', 'A3',\n", + " 'A5', 'C4', 'C1', 'B2', 'C3', 'C2', 'A4', 'B1'], dtype=object)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO OS VALORES DO ATRIBUTO TIPO 'OBJECT'\n", + "x['Product_Info_2'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "ee0d1d75-93b6-4cd7-9a9b-d42b2edacf5c", + "metadata": {}, + "outputs": [], + "source": [ + "# SEPARANDO OS CARACTERES ALFABÉTICOS E NUMÉRICOS DA VARIÁVEL 'PRODUCT_INFO_2' E CRIANDO UMA NOVA COLUNA PARA CADA\n", + "x['Product_Info_2_char'] = x.Product_Info_2.str[0]\n", + "x['Product_Info_2_num'] = x.Product_Info_2.str[1]\n", + "\n", + "# OBTENDO OS CARACTERES ÚNICOS E OS ORDENANDO EM ORDEM DECRESCENTE\n", + "producto_info_2_char = np.sort(x['Product_Info_2_char'].unique()).tolist()\n", + "\n", + "# ELIMINANDO A COLUNA QUE FOI DESDOBRADA EM DUAS\n", + "x = x.drop(columns='Product_Info_2', axis=1)" + ] + }, + { + "cell_type": "markdown", + "id": "cf81e375-92d5-4560-8257-d79f0b3eba6a", + "metadata": {}, + "source": [ + "# Criando Pipeline para Tratamento dos Dados" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "281f5cbd-1c38-4c01-a595-4bf014e97bb7", + "metadata": {}, + "outputs": [], + "source": [ + "# PIPELINE PARA TRATAMENTO DOS ATRIBUTOS NUMÉRICOS\n", + "\n", + "pipeline_numerical = Pipeline([ \n", + " ('simple_imputer', SimpleImputer(strategy='mean')), \n", + " ('iterative_imputer', IterativeImputer())\n", + " ])" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "1bca9a65-1f60-4512-86d1-150fd358c585", + "metadata": {}, + "outputs": [], + "source": [ + "# PIPELINE PARA TRATAMENTO DOS ATRIBUTOS TIPO OBJECT\n", + "pipeline_object = Pipeline([('ordinal_encoder', OrdinalEncoder(categories=[producto_info_2_char]))])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "3aa211df-06c3-4566-8b30-0528bce738f8", + "metadata": {}, + "outputs": [], + "source": [ + "# FAZENDO TRANFORMAÇÕES NOS ATRIBUTOS UTILIZADOS NOS PIPELINES\n", + "\n", + "ct_preprocessor = ColumnTransformer([\n", + " ('numerical', pipeline_numerical, missing_values_keep), \n", + " ('object', pipeline_object, ['Product_Info_2_char'])\n", + " ], remainder='passthrough')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "8a495dc2-74f6-4338-99e5-af5e92432c23", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ColumnTransformer(remainder='passthrough',\n", + " transformers=[('numerical',\n", + " Pipeline(steps=[('simple_imputer',\n", + " SimpleImputer()),\n", + " ('iterative_imputer',\n", + " IterativeImputer())]),\n", + " ['Family_Hist_3', 'Family_Hist_2',\n", + " 'Insurance_History_5', 'Family_Hist_4',\n", + " 'Employment_Info_6', 'Medical_History_1',\n", + " 'Employment_Info_4', 'Employment_Info_1']),\n", + " ('object',\n", + " Pipeline(steps=[('ordinal_encoder',\n", + " OrdinalEncoder(categories=[['A',\n", + " 'B',\n", + " 'C',\n", + " 'D',\n", + " 'E']]))]),\n", + " ['Product_Info_2_char'])])" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TREINAMNDO ALGORITMO PARA TRATAMENTO DOS DADOS\n", + "ct_preprocessor.fit(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "b898d50e-0f93-497c-afec-dc762cd6c9f8", + "metadata": {}, + "outputs": [], + "source": [ + "# TRANSFORMANDO OS DADOS E ATRIBUINDO-OS A UM DATAFRAME\n", + "x_train = pd.DataFrame(ct_preprocessor.transform(x), columns=x.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "1f7859bc-ea2f-4f17-805d-4f1ac757cadc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Product_Info_1Product_Info_3Product_Info_4Product_Info_5Product_Info_6Product_Info_7Ins_AgeHtWtBMIEmployment_Info_1Employment_Info_2Employment_Info_3Employment_Info_4Employment_Info_5Employment_Info_6InsuredInfo_1InsuredInfo_2InsuredInfo_3InsuredInfo_4InsuredInfo_5InsuredInfo_6InsuredInfo_7Insurance_History_1Insurance_History_2Insurance_History_3Insurance_History_4Insurance_History_5Insurance_History_7Insurance_History_8Insurance_History_9Family_Hist_1Family_Hist_2Family_Hist_3Family_Hist_4Medical_History_1Medical_History_2Medical_History_3Medical_History_4Medical_History_5Medical_History_6Medical_History_7Medical_History_8Medical_History_9Medical_History_11Medical_History_12Medical_History_13Medical_History_14Medical_History_16Medical_History_17Medical_History_18Medical_History_19Medical_History_20Medical_History_21Medical_History_22Medical_History_23Medical_History_25Medical_History_26Medical_History_27Medical_History_28Medical_History_29Medical_History_30Medical_History_31Medical_History_33Medical_History_34Medical_History_35Medical_History_36Medical_History_37Medical_History_38Medical_History_39Medical_History_40Medical_History_41Medical_Keyword_1Medical_Keyword_2Medical_Keyword_3Medical_Keyword_4Medical_Keyword_5Medical_Keyword_6Medical_Keyword_7Medical_Keyword_8Medical_Keyword_9Medical_Keyword_10Medical_Keyword_11Medical_Keyword_12Medical_Keyword_13Medical_Keyword_14Medical_Keyword_15Medical_Keyword_16Medical_Keyword_17Medical_Keyword_18Medical_Keyword_19Medical_Keyword_20Medical_Keyword_21Medical_Keyword_22Medical_Keyword_23Medical_Keyword_24Medical_Keyword_25Medical_Keyword_26Medical_Keyword_27Medical_Keyword_28Medical_Keyword_29Medical_Keyword_30Medical_Keyword_31Medical_Keyword_32Medical_Keyword_33Medical_Keyword_34Medical_Keyword_35Medical_Keyword_36Medical_Keyword_37Medical_Keyword_38Medical_Keyword_39Medical_Keyword_40Medical_Keyword_41Medical_Keyword_42Medical_Keyword_43Medical_Keyword_44Medical_Keyword_45Medical_Keyword_46Medical_Keyword_47Medical_Keyword_48Product_Info_2_charProduct_Info_2_num
00.5980390.474550.0006670.444890.3614694.00.00.0283.01100.0769232110.6417910.5818180.1485360.3230081213126312111311122112211322132333311212313313231312213330000000000000000000000000000000000000000000000003
10.4977370.1884060.0001330.0845070.00185.00.00.00.01260.0769232310.0597010.60.1317990.272288132126312121311322412211322132331311212313313233112213310000000000000000000000000000000000000000000000001
20.4977370.3043480.0017330.2253520.0310.00.00.034.01260.0769232310.0298510.7454550.2887030.428789121283111211332333221322232331311212322313233313213310000000000000000000000000000000000000000000000001
30.4977370.420290.0017330.3521130.20.00.00.0423.01100.4871792310.1641790.6727270.2050210.352438913228312121133233350221322232331311222313313233312213310000000000000000000000000000000100000000000000004
40.4977370.4637680.0017330.4084510.057.9621720.00.0273.01260.2307692310.417910.6545450.234310.424046912126312121133232162221322232331311212322313233313213310000000000000000000000000000000000000000000000002
\n", + "
" + ], + "text/plain": [ + " Product_Info_1 Product_Info_3 Product_Info_4 Product_Info_5 Product_Info_6 \\\n", + "0 0.598039 0.47455 0.000667 0.44489 0.361469 \n", + "1 0.497737 0.188406 0.000133 0.084507 0.0018 \n", + "2 0.497737 0.304348 0.001733 0.225352 0.03 \n", + "3 0.497737 0.42029 0.001733 0.352113 0.2 \n", + "4 0.497737 0.463768 0.001733 0.408451 0.05 \n", + "\n", + " Product_Info_7 Ins_Age Ht Wt BMI Employment_Info_1 Employment_Info_2 \\\n", + "0 4.0 0.0 0.028 3.0 1 10 0.076923 \n", + "1 5.0 0.0 0.0 0.0 1 26 0.076923 \n", + "2 10.0 0.0 0.03 4.0 1 26 0.076923 \n", + "3 0.0 0.0 0.042 3.0 1 10 0.487179 \n", + "4 7.962172 0.0 0.027 3.0 1 26 0.230769 \n", + "\n", + " Employment_Info_3 Employment_Info_4 Employment_Info_5 Employment_Info_6 \\\n", + "0 2 1 1 0.641791 \n", + "1 2 3 1 0.059701 \n", + "2 2 3 1 0.029851 \n", + "3 2 3 1 0.164179 \n", + "4 2 3 1 0.41791 \n", + "\n", + " InsuredInfo_1 InsuredInfo_2 InsuredInfo_3 InsuredInfo_4 InsuredInfo_5 \\\n", + "0 0.581818 0.148536 0.323008 12 1 \n", + "1 0.6 0.131799 0.272288 1 3 \n", + "2 0.745455 0.288703 0.42878 9 1 \n", + "3 0.672727 0.205021 0.352438 9 1 \n", + "4 0.654545 0.23431 0.424046 9 1 \n", + "\n", + " InsuredInfo_6 InsuredInfo_7 Insurance_History_1 Insurance_History_2 \\\n", + "0 3 1 2 6 \n", + "1 2 1 2 6 \n", + "2 2 1 2 8 \n", + "3 3 2 2 8 \n", + "4 2 1 2 6 \n", + "\n", + " Insurance_History_3 Insurance_History_4 Insurance_History_5 \\\n", + "0 3 1 2 \n", + "1 3 1 2 \n", + "2 3 1 1 \n", + "3 3 1 2 \n", + "4 3 1 2 \n", + "\n", + " Insurance_History_7 Insurance_History_8 Insurance_History_9 Family_Hist_1 \\\n", + "0 1 1 1 3 \n", + "1 1 2 1 3 \n", + "2 1 2 1 1 \n", + "3 1 2 1 1 \n", + "4 1 2 1 1 \n", + "\n", + " Family_Hist_2 Family_Hist_3 Family_Hist_4 Medical_History_1 \\\n", + "0 1 1 1 2 \n", + "1 1 1 3 2 \n", + "2 3 3 2 3 \n", + "3 3 3 2 3 \n", + "4 3 3 2 3 \n", + "\n", + " Medical_History_2 Medical_History_3 Medical_History_4 Medical_History_5 \\\n", + "0 2 112 2 1 \n", + "1 2 412 2 1 \n", + "2 3 3 2 2 \n", + "3 3 350 2 2 \n", + "4 2 162 2 2 \n", + "\n", + " Medical_History_6 Medical_History_7 Medical_History_8 Medical_History_9 \\\n", + "0 1 3 2 2 \n", + "1 1 3 2 2 \n", + "2 1 3 2 2 \n", + "3 1 3 2 2 \n", + "4 1 3 2 2 \n", + "\n", + " Medical_History_11 Medical_History_12 Medical_History_13 Medical_History_14 \\\n", + "0 1 3 2 3 \n", + "1 1 3 2 3 \n", + "2 2 3 2 3 \n", + "3 2 3 2 3 \n", + "4 2 3 2 3 \n", + "\n", + " Medical_History_16 Medical_History_17 Medical_History_18 Medical_History_19 \\\n", + "0 3 3 3 1 \n", + "1 3 1 3 1 \n", + "2 3 1 3 1 \n", + "3 3 1 3 1 \n", + "4 3 1 3 1 \n", + "\n", + " Medical_History_20 Medical_History_21 Medical_History_22 Medical_History_23 \\\n", + "0 1 2 1 2 \n", + "1 1 2 1 2 \n", + "2 1 2 1 2 \n", + "3 1 2 2 2 \n", + "4 1 2 1 2 \n", + "\n", + " Medical_History_25 Medical_History_26 Medical_History_27 Medical_History_28 \\\n", + "0 3 1 3 3 \n", + "1 3 1 3 3 \n", + "2 3 2 2 3 \n", + "3 3 1 3 3 \n", + "4 3 2 2 3 \n", + "\n", + " Medical_History_29 Medical_History_30 Medical_History_31 Medical_History_33 \\\n", + "0 1 3 2 3 \n", + "1 1 3 2 3 \n", + "2 1 3 2 3 \n", + "3 1 3 2 3 \n", + "4 1 3 2 3 \n", + "\n", + " Medical_History_34 Medical_History_35 Medical_History_36 Medical_History_37 \\\n", + "0 1 3 1 2 \n", + "1 3 1 1 2 \n", + "2 3 3 1 3 \n", + "3 3 3 1 2 \n", + "4 3 3 1 3 \n", + "\n", + " Medical_History_38 Medical_History_39 Medical_History_40 Medical_History_41 \\\n", + "0 2 1 3 3 \n", + "1 2 1 3 3 \n", + "2 2 1 3 3 \n", + "3 2 1 3 3 \n", + "4 2 1 3 3 \n", + "\n", + " Medical_Keyword_1 Medical_Keyword_2 Medical_Keyword_3 Medical_Keyword_4 \\\n", + "0 3 0 0 0 \n", + "1 1 0 0 0 \n", + "2 1 0 0 0 \n", + "3 1 0 0 0 \n", + "4 1 0 0 0 \n", + "\n", + " Medical_Keyword_5 Medical_Keyword_6 Medical_Keyword_7 Medical_Keyword_8 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_9 Medical_Keyword_10 Medical_Keyword_11 Medical_Keyword_12 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_13 Medical_Keyword_14 Medical_Keyword_15 Medical_Keyword_16 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_17 Medical_Keyword_18 Medical_Keyword_19 Medical_Keyword_20 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_21 Medical_Keyword_22 Medical_Keyword_23 Medical_Keyword_24 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_25 Medical_Keyword_26 Medical_Keyword_27 Medical_Keyword_28 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_29 Medical_Keyword_30 Medical_Keyword_31 Medical_Keyword_32 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_33 Medical_Keyword_34 Medical_Keyword_35 Medical_Keyword_36 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 1 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_37 Medical_Keyword_38 Medical_Keyword_39 Medical_Keyword_40 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_41 Medical_Keyword_42 Medical_Keyword_43 Medical_Keyword_44 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Medical_Keyword_45 Medical_Keyword_46 Medical_Keyword_47 Medical_Keyword_48 \\\n", + "0 0 0 0 0 \n", + "1 0 0 0 0 \n", + "2 0 0 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "\n", + " Product_Info_2_char Product_Info_2_num \n", + "0 0 3 \n", + "1 0 1 \n", + "2 0 1 \n", + "3 0 4 \n", + "4 0 2 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO DADOS TRATADOS\n", + "x_train.head()" + ] + }, + { + "cell_type": "markdown", + "id": "ce8d1ae4-449a-4021-875c-208364ccb828", + "metadata": {}, + "source": [ + "# Balanceamento das Classes" + ] + }, + { + "cell_type": "markdown", + "id": "1d9ae14e-bc06-46e0-913c-de1aeeb5650d", + "metadata": {}, + "source": [ + "-> SMOTE cria dados sinteticos para os atributos minoritários dentro da variação padrão, fazendo assim o balanceanto igualitário da distribuição de dados para cada classe alvo.\n", + "\n", + "-> SMOTE + ENN é uma técnica híbrida de sub-amostragem onde os vizinhos mais próximos da classe majoritária são estimados. Caso os vizinhos mais próximos classifiquem incorretamente essa instância \n", + " particular da classe majoritária, então essa instância é excluída.\n", + " O resultado do balanceamento ocorre de forma inversa a distribuição normal da entrada de dados. \n", + " Considerando que o modelo recebera mais dados de uma determinada classe ele gera menos valores da mesma, visto que o modelo tende a prever com mais frequência\n", + " as classes que mais foram analisadas no treinamento. Ou seja, se treinarmos com mais dados as classes que naturalmente tem um quantidade menor, o modelo não terá dificuldade para prevê-las em operação." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "22f1072a-1f13-409e-bc10-80357f8fd9de", + "metadata": {}, + "outputs": [], + "source": [ + "# CONTAGEM DE CADA CLASSE\n", + "counter = Counter(y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "cc3b0cc7-4d96-4223-b1af-150ec775537c", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO SMOTEENN\n", + "smote_enn = SMOTEENN(sampling_strategy='all')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "96ccb080-372d-45fc-b4ce-282df78bd35b", + "metadata": {}, + "outputs": [], + "source": [ + "# TREINANDO E APLICANDO BALANCEAMENTO DAS CLASSES\n", + "x_balanced, y_balanced = smote_enn.fit_resample(x_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "00317208-ecb5-4635-9d58-513f2dc74a19", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# PLOTANDO QUANTIDADE DE AMOSTRAS POR CLASSE ÁPOS BALANCEAMENTO\n", + "\n", + "plt.figure(figsize=(15,6))\n", + "sns.countplot(x=y_balanced, palette = \"OrRd\")\n", + "plt.box(False)\n", + "plt.xlabel('Classes', fontsize = 11)\n", + "plt.ylabel('Quantidade', fontsize = 11)\n", + "plt.title('Contagem de Classes\\n')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "09859742-0717-4095-a873-d0a67c682130", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape dos dados de treino antes do balanceamento -> atributos:(59381, 122) label:(59381,)\n", + "Shape dos dados de treino depois do balanceamento -> atributos:(98269, 122) label:(98269,)\n" + ] + } + ], + "source": [ + "# VISUALIZANDO ALTERAÇÕES FEITAS NO TAMANHO DO DADOS\n", + "\n", + "print('Shape dos dados de treino antes do balanceamento -> atributos:{} label:{}'.format(x_train.shape, y_train.shape))\n", + "print('Shape dos dados de treino depois do balanceamento -> atributos:{} label:{}'.format(x_balanced.shape, y_balanced.shape))" + ] + }, + { + "cell_type": "markdown", + "id": "e8ba5b70-fe92-47b9-9af4-568709ac17db", + "metadata": {}, + "source": [ + "## Salvando dados tratados em um csv" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "66cdc414-6ec4-40a9-b7cc-4775eec347e6", + "metadata": {}, + "outputs": [], + "source": [ + "train_data = pd.DataFrame(x_balanced, columns=x.columns.tolist())\n", + "train_data['Response'] = y_balanced" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "85b0a3ca-fadb-432d-907b-163683327e67", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Product_Info_1Product_Info_3Product_Info_4Product_Info_5Product_Info_6Product_Info_7Ins_AgeHtWtBMIEmployment_Info_1Employment_Info_2Employment_Info_3Employment_Info_4Employment_Info_5Employment_Info_6InsuredInfo_1InsuredInfo_2InsuredInfo_3InsuredInfo_4InsuredInfo_5InsuredInfo_6InsuredInfo_7Insurance_History_1Insurance_History_2Insurance_History_3Insurance_History_4Insurance_History_5Insurance_History_7Insurance_History_8Insurance_History_9Family_Hist_1Family_Hist_2Family_Hist_3Family_Hist_4Medical_History_1Medical_History_2Medical_History_3Medical_History_4Medical_History_5Medical_History_6Medical_History_7Medical_History_8Medical_History_9Medical_History_11Medical_History_12Medical_History_13Medical_History_14Medical_History_16Medical_History_17Medical_History_18Medical_History_19Medical_History_20Medical_History_21Medical_History_22Medical_History_23Medical_History_25Medical_History_26Medical_History_27Medical_History_28Medical_History_29Medical_History_30Medical_History_31Medical_History_33Medical_History_34Medical_History_35Medical_History_36Medical_History_37Medical_History_38Medical_History_39Medical_History_40Medical_History_41Medical_Keyword_1Medical_Keyword_2Medical_Keyword_3Medical_Keyword_4Medical_Keyword_5Medical_Keyword_6Medical_Keyword_7Medical_Keyword_8Medical_Keyword_9Medical_Keyword_10Medical_Keyword_11Medical_Keyword_12Medical_Keyword_13Medical_Keyword_14Medical_Keyword_15Medical_Keyword_16Medical_Keyword_17Medical_Keyword_18Medical_Keyword_19Medical_Keyword_20Medical_Keyword_21Medical_Keyword_22Medical_Keyword_23Medical_Keyword_24Medical_Keyword_25Medical_Keyword_26Medical_Keyword_27Medical_Keyword_28Medical_Keyword_29Medical_Keyword_30Medical_Keyword_31Medical_Keyword_32Medical_Keyword_33Medical_Keyword_34Medical_Keyword_35Medical_Keyword_36Medical_Keyword_37Medical_Keyword_38Medical_Keyword_39Medical_Keyword_40Medical_Keyword_41Medical_Keyword_42Medical_Keyword_43Medical_Keyword_44Medical_Keyword_45Medical_Keyword_46Medical_Keyword_47Medical_Keyword_48Product_Info_2_charProduct_Info_2_numResponse
00.4977370.7971010.0006670.444890.057.9621720.00.0254.01.021.00.0769232.03.01.00.5522390.60.2845190.5877961.03.03.02.02.03.03.01.02.01.02.01.03.01.01.03.02.03.0162.02.02.01.03.02.02.02.03.02.03.03.03.03.01.01.02.01.02.01.01.03.03.01.03.02.03.03.03.01.02.02.01.03.03.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.01.01
10.50.474550.0017330.6619720.056.00.00.13.01.026.00.2307692.03.01.00.4477610.7272730.3305440.516399.01.02.01.02.06.03.01.01.01.02.01.01.03.03.02.03.03.0112.02.02.01.03.02.02.02.03.02.03.03.01.03.01.01.02.01.02.03.01.03.03.01.03.02.03.03.03.01.02.02.01.03.03.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.03.01
20.5784310.474550.0006670.444891.07.9621720.0062830.153.01.026.00.0769232.03.01.00.7910450.8181820.5606690.75899712.01.02.01.02.06.03.01.01.01.02.01.03.01.01.03.02.03.0162.02.02.01.03.02.02.02.03.02.03.03.01.03.01.01.02.01.02.03.01.03.03.01.01.02.03.03.03.01.02.02.01.03.03.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.01.01
30.4313730.474550.0017330.444890.3614691.00.00.020.01.026.00.0256412.01.01.00.4925370.7454550.3200840.4796399.01.02.02.02.08.03.01.01.01.02.01.01.03.03.02.03.03.0373.02.02.01.03.02.02.02.03.02.03.03.01.03.01.01.02.01.02.03.02.02.03.01.03.02.03.03.03.01.03.02.01.01.03.01.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.08.01
40.4977370.6811590.0001670.6478871.06.00.00.093.01.026.00.4871792.03.01.00.5671640.6727270.2887030.5049993.01.02.01.02.08.03.01.01.01.02.03.03.01.01.03.02.03.0112.02.01.01.03.02.02.02.03.02.03.03.01.03.01.01.02.02.02.03.01.03.03.01.03.02.03.03.03.01.02.02.01.03.01.03.00.00.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.03.01
\n", + "
" + ], + "text/plain": [ + " Product_Info_1 Product_Info_3 Product_Info_4 Product_Info_5 Product_Info_6 \\\n", + "0 0.497737 0.797101 0.000667 0.44489 0.05 \n", + "1 0.5 0.47455 0.001733 0.661972 0.05 \n", + "2 0.578431 0.47455 0.000667 0.44489 1.0 \n", + "3 0.431373 0.47455 0.001733 0.44489 0.361469 \n", + "4 0.497737 0.681159 0.000167 0.647887 1.0 \n", + "\n", + " Product_Info_7 Ins_Age Ht Wt BMI Employment_Info_1 \\\n", + "0 7.962172 0.0 0.025 4.0 1.0 21.0 \n", + "1 6.0 0.0 0.1 3.0 1.0 26.0 \n", + "2 7.962172 0.006283 0.15 3.0 1.0 26.0 \n", + "3 1.0 0.0 0.02 0.0 1.0 26.0 \n", + "4 6.0 0.0 0.09 3.0 1.0 26.0 \n", + "\n", + " Employment_Info_2 Employment_Info_3 Employment_Info_4 Employment_Info_5 \\\n", + "0 0.076923 2.0 3.0 1.0 \n", + "1 0.230769 2.0 3.0 1.0 \n", + "2 0.076923 2.0 3.0 1.0 \n", + "3 0.025641 2.0 1.0 1.0 \n", + "4 0.487179 2.0 3.0 1.0 \n", + "\n", + " Employment_Info_6 InsuredInfo_1 InsuredInfo_2 InsuredInfo_3 InsuredInfo_4 \\\n", + "0 0.552239 0.6 0.284519 0.587796 1.0 \n", + "1 0.447761 0.727273 0.330544 0.51639 9.0 \n", + "2 0.791045 0.818182 0.560669 0.758997 12.0 \n", + "3 0.492537 0.745455 0.320084 0.479639 9.0 \n", + "4 0.567164 0.672727 0.288703 0.504999 3.0 \n", + "\n", + " InsuredInfo_5 InsuredInfo_6 InsuredInfo_7 Insurance_History_1 \\\n", + "0 3.0 3.0 2.0 2.0 \n", + "1 1.0 2.0 1.0 2.0 \n", + "2 1.0 2.0 1.0 2.0 \n", + "3 1.0 2.0 2.0 2.0 \n", + "4 1.0 2.0 1.0 2.0 \n", + "\n", + " Insurance_History_2 Insurance_History_3 Insurance_History_4 \\\n", + "0 3.0 3.0 1.0 \n", + "1 6.0 3.0 1.0 \n", + "2 6.0 3.0 1.0 \n", + "3 8.0 3.0 1.0 \n", + "4 8.0 3.0 1.0 \n", + "\n", + " Insurance_History_5 Insurance_History_7 Insurance_History_8 \\\n", + "0 2.0 1.0 2.0 \n", + "1 1.0 1.0 2.0 \n", + "2 1.0 1.0 2.0 \n", + "3 1.0 1.0 2.0 \n", + "4 1.0 1.0 2.0 \n", + "\n", + " Insurance_History_9 Family_Hist_1 Family_Hist_2 Family_Hist_3 Family_Hist_4 \\\n", + "0 1.0 3.0 1.0 1.0 3.0 \n", + "1 1.0 1.0 3.0 3.0 2.0 \n", + "2 1.0 3.0 1.0 1.0 3.0 \n", + "3 1.0 1.0 3.0 3.0 2.0 \n", + "4 3.0 3.0 1.0 1.0 3.0 \n", + "\n", + " Medical_History_1 Medical_History_2 Medical_History_3 Medical_History_4 \\\n", + "0 2.0 3.0 162.0 2.0 \n", + "1 3.0 3.0 112.0 2.0 \n", + "2 2.0 3.0 162.0 2.0 \n", + "3 3.0 3.0 373.0 2.0 \n", + "4 2.0 3.0 112.0 2.0 \n", + "\n", + " Medical_History_5 Medical_History_6 Medical_History_7 Medical_History_8 \\\n", + "0 2.0 1.0 3.0 2.0 \n", + "1 2.0 1.0 3.0 2.0 \n", + "2 2.0 1.0 3.0 2.0 \n", + "3 2.0 1.0 3.0 2.0 \n", + "4 1.0 1.0 3.0 2.0 \n", + "\n", + " Medical_History_9 Medical_History_11 Medical_History_12 Medical_History_13 \\\n", + "0 2.0 2.0 3.0 2.0 \n", + "1 2.0 2.0 3.0 2.0 \n", + "2 2.0 2.0 3.0 2.0 \n", + "3 2.0 2.0 3.0 2.0 \n", + "4 2.0 2.0 3.0 2.0 \n", + "\n", + " Medical_History_14 Medical_History_16 Medical_History_17 Medical_History_18 \\\n", + "0 3.0 3.0 3.0 3.0 \n", + "1 3.0 3.0 1.0 3.0 \n", + "2 3.0 3.0 1.0 3.0 \n", + "3 3.0 3.0 1.0 3.0 \n", + "4 3.0 3.0 1.0 3.0 \n", + "\n", + " Medical_History_19 Medical_History_20 Medical_History_21 Medical_History_22 \\\n", + "0 1.0 1.0 2.0 1.0 \n", + "1 1.0 1.0 2.0 1.0 \n", + "2 1.0 1.0 2.0 1.0 \n", + "3 1.0 1.0 2.0 1.0 \n", + "4 1.0 1.0 2.0 2.0 \n", + "\n", + " Medical_History_23 Medical_History_25 Medical_History_26 Medical_History_27 \\\n", + "0 2.0 1.0 1.0 3.0 \n", + "1 2.0 3.0 1.0 3.0 \n", + "2 2.0 3.0 1.0 3.0 \n", + "3 2.0 3.0 2.0 2.0 \n", + "4 2.0 3.0 1.0 3.0 \n", + "\n", + " Medical_History_28 Medical_History_29 Medical_History_30 Medical_History_31 \\\n", + "0 3.0 1.0 3.0 2.0 \n", + "1 3.0 1.0 3.0 2.0 \n", + "2 3.0 1.0 1.0 2.0 \n", + "3 3.0 1.0 3.0 2.0 \n", + "4 3.0 1.0 3.0 2.0 \n", + "\n", + " Medical_History_33 Medical_History_34 Medical_History_35 Medical_History_36 \\\n", + "0 3.0 3.0 3.0 1.0 \n", + "1 3.0 3.0 3.0 1.0 \n", + "2 3.0 3.0 3.0 1.0 \n", + "3 3.0 3.0 3.0 1.0 \n", + "4 3.0 3.0 3.0 1.0 \n", + "\n", + " Medical_History_37 Medical_History_38 Medical_History_39 Medical_History_40 \\\n", + "0 2.0 2.0 1.0 3.0 \n", + "1 2.0 2.0 1.0 3.0 \n", + "2 2.0 2.0 1.0 3.0 \n", + "3 3.0 2.0 1.0 1.0 \n", + "4 2.0 2.0 1.0 3.0 \n", + "\n", + " Medical_History_41 Medical_Keyword_1 Medical_Keyword_2 Medical_Keyword_3 \\\n", + "0 3.0 1.0 0.0 0.0 \n", + "1 3.0 1.0 0.0 0.0 \n", + "2 3.0 1.0 0.0 0.0 \n", + "3 3.0 1.0 0.0 0.0 \n", + "4 1.0 3.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_4 Medical_Keyword_5 Medical_Keyword_6 Medical_Keyword_7 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 1.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_8 Medical_Keyword_9 Medical_Keyword_10 Medical_Keyword_11 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_12 Medical_Keyword_13 Medical_Keyword_14 Medical_Keyword_15 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 1.0 0.0 \n", + "\n", + " Medical_Keyword_16 Medical_Keyword_17 Medical_Keyword_18 Medical_Keyword_19 \\\n", + "0 1.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_20 Medical_Keyword_21 Medical_Keyword_22 Medical_Keyword_23 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_24 Medical_Keyword_25 Medical_Keyword_26 Medical_Keyword_27 \\\n", + "0 0.0 0.0 1.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_28 Medical_Keyword_29 Medical_Keyword_30 Medical_Keyword_31 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_32 Medical_Keyword_33 Medical_Keyword_34 Medical_Keyword_35 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_36 Medical_Keyword_37 Medical_Keyword_38 Medical_Keyword_39 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_40 Medical_Keyword_41 Medical_Keyword_42 Medical_Keyword_43 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_44 Medical_Keyword_45 Medical_Keyword_46 Medical_Keyword_47 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Medical_Keyword_48 Product_Info_2_char Product_Info_2_num Response \n", + "0 0.0 0.0 1.0 1 \n", + "1 0.0 0.0 3.0 1 \n", + "2 0.0 0.0 1.0 1 \n", + "3 0.0 0.0 8.0 1 \n", + "4 0.0 0.0 3.0 1 " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "35f8335f-dcaa-40b7-ba05-885be2c0fa1c", + "metadata": {}, + "outputs": [], + "source": [ + "train_data.to_csv(\"/train_data_trated.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "4868f0c3-b1c8-4c39-9108-bd5a9abd81d9", + "metadata": {}, + "source": [ + "#
CRIANDO MODELO" + ] + }, + { + "cell_type": "markdown", + "id": "41bd4800-5e97-4e61-aeb5-aa2f60922e65", + "metadata": {}, + "source": [ + "## Otimização de Hyper-Parâmetros" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "ddb5a4bb-fb1d-47f1-a936-6bc7af7ff868", + "metadata": {}, + "outputs": [], + "source": [ + "# PARÂMETROS A SEREM TESTADOS\n", + "\n", + "param = {'min_samples_leaf': [1, 3, 5, 7], \n", + " 'max_features': ['auto', 'sqrt', 'log2']}" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "162464a1-9146-4f27-b312-6be8085094dd", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO OTMIZADOR DE PARÂMETROS\n", + "\n", + "grid_search = GridSearchCV(estimator = RandomForestClassifier(n_estimators=50, criterion='gini', random_state=42), \n", + " param_grid = param, \n", + " cv = 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "0a27a2fd-f1f9-4785-a26c-fed4714ad5cb", + "metadata": {}, + "outputs": [], + "source": [ + "# REALIZANDO TREINAMENTO\n", + "grid_random_forest = grid_search.fit(x_balanced, y_balanced)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "6a9e3f15-7b17-48e2-8bf6-74692dbd8593", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestClassifier(max_features='log2', n_estimators=50, random_state=42)" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO A MELHOR COMBINAÇÃO DE PARÂMETROS\n", + "grid_search.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "966d2ffa-3db8-4709-bd32-8374eb9417b5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'max_features': 'log2', 'min_samples_leaf': 1}" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# VISUALIZANDO A MELHOR COMBINAÇÃO DE PARÂMETROS DENTRO DAS OPÇÕES DADAS\n", + "grid_search.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "e5792cdb-da31-4147-9f51-03a4969e7623", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8440200136456252" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# MELHOR PONTUAÇÃO OBTIDA NO TREINAMENTO\n", + "grid_search.best_score_" + ] + }, + { + "cell_type": "markdown", + "id": "a7b008dd-7f35-4ea9-b740-04e309575f36", + "metadata": {}, + "source": [ + "## Curvas de Validação" + ] + }, + { + "cell_type": "markdown", + "id": "d9edb4a2-53ad-4b9b-ab63-58f17d6e6ef1", + "metadata": {}, + "source": [ + "-> A curva de validação serve para verificar como se comporta a pontuação do modelo em detrimento da alteração de algum hyper-parâmetro.
\n", + "-> Neste caso, foi alterado o número de árvores utilizados pelo algoritmo RandomForestClassifier." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "b748b82d-c2a8-4950-be50-a761d63a55b9", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO ARRAY COM VALORES PARA SEREM TESTADOS ([ 20, 60, 100, 140, 180, 220, 260, 300])\n", + "range_estimators = np.arange(20, 301, 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "e74b9193-2a5a-4d0a-83c3-fbf051257b73", + "metadata": {}, + "outputs": [], + "source": [ + "# EXECUÇÃO DO ALGORITMO DE VALIDAÇÃO\n", + "\n", + "train_scores, test_scores = validation_curve(RandomForestClassifier(criterion='gini', max_features='log2', min_samples_leaf=1), \n", + " x_balanced, y_balanced, \n", + " param_name = 'n_estimators', \n", + " param_range = range_estimators,\n", + " cv = 10, \n", + " scoring = 'accuracy')" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "120021bf-2489-41b5-b0f1-0697fe5480d8", + "metadata": {}, + "outputs": [], + "source": [ + "# OBTENDO MÉDIAS E DESVIO PADRÃO PARA PLOTAGEM\n", + "\n", + "train_mean = np.mean(train_scores, axis=1)\n", + "train_std = np.std(train_scores, axis=1)\n", + "\n", + "test_mean = np.mean(test_scores, axis=1)\n", + "test_std = np.std(test_scores, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "359d1d5e-f351-45b7-acb2-945c27ab0aac", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA/9UlEQVR4nO3deZwU1bn/8c93VkC2YRGGHQ3iiqN3ghGNGnfFJZgYxEQNmqhRNGpMJMbcYExuuP40ZjMaNK4hcYliuIIRohAEE2XAYVNBgqgDCMO+KMz2/P6o6rFoemZ6oHumZ3jer1e9upZTVed0z9TT51T1OTIznHPOuUyT1dwZcM455xLxAOWccy4jeYByzjmXkTxAOeecy0geoJxzzmUkD1DOOecykgco1+wkDZBkknKa+LyPSfpZOP9FSUuTSbuP5/ympHWSTpX0gqSO+3rM1krSSkmnN3c+XPPxANWKSbpUUomk7ZLWSHpJ0onNna9UkTQqvIgpbn1OGATOS/ZYZvaamQ1OfS73cArwBeAGoNzMtjbBOVNC0imSasK/p22Slkoa3dz52lfhl4+KsFyxaWQTnn+cpD811flaEg9QrZSkW4BfAf8D9AD6Ab8HLtyLYzVpzaYRJgGdgZPj1p8NGPD3ps5QQ8zsm2a2wsxGmNm3mzs/e2G1mbUHOgI3Aw9JaorAnm53m1n7yPR0Y3bO4P+RFs0DVCskqRPwU+B6M3vezHaYWaWZ/Z+ZfT9Ms1uTVfjtuCyyvFLSbZIWAjsk3SHpr3Hn+bWk34TzoyW9E36zXiHpmnryly3pHknrJa0AhsfnX9Ifw1rfKkk/k5Qdfxwz2wk8A1wet+lyYKKZVUl6VtLHkrZImiXpiDryFF/+YyTND8vzNNAmsq1A0ouSyiVtCuf7RLZ3kfSopNXh9heS3K+XpMmSNkpaLqnOACapraR7JX0Qlm22pLbhtgskLZG0WdJMSYdF9lsp6fuSFkraEb7PPcLa9TZJ/5BUUNd5I++9mdlUYCMwJMnyzZR0l6Q54bmmSeoW2X5ZWJ4Nkn4UV958Sb8K39PV4Xx+9LOT9AMFNec1kr4s6VxJy8L38/aGylTH+/zt8LPYGH42vSLbTNL1kt4D3gvXnSepNHzvX5c0JJL+tvDvOVb7PE3S2cDtwEgFNbcFe5PPVsvMfGplE0ENogrIqSfNY8DPIsunAGWR5ZVAKdAXaAv0Bz4BOobbs4E1wBfC5eHAwYAIajSfAMfWce5rgXfDY3cBZhDUeHLC7S8AfwAOAA4E3gSuqeNYJwBbgbbhcifgU6AoXL4S6ADkE9QoSxO9B9HyA3nABwQ1hFzgq0BlJG1X4CtAu/DYzwIvRI47BXgaKAj3PznJ/f5JUMttAxQB5cBpdZT7fmAm0Dv8LIaFZTwE2AGcEZ77B8ByIC/yuf6boFbdG1gHzAeOCfd/FfhJHeeMvkdZwAVADXBMkuWbCfwnzGPbcHl8uO1wYDtwUpiPXxL8DZ8ebv9pmO8Dge7A68BdkXxVAf8dlvnb4Xv35zAfRwA7gYOS+V+IrD8VWA8cG+bpt8CsyHYDphP8DbcN060Djgs/kyvC9zsfGAx8BPQK9x0AHBzOjwP+1NzXjUycmj0DPqXhQ4WvAx83kGa3f0oSB6gr4/aZDVwezp8B/Kee478AfLeOba8C10aWzwz/2XPCC+cuwoATbh8FzKjnXO8Bl4bz3wYW1JGuc3ieTvHvAbtffE8CVgOK7Pt6ootYuK0I2BTOFxJctAuS+Jyi+/UFqoEOke2/AB5LsF8WQRA+OsG2HwPPxKVdBZwS+Vy/Htn+HPBAZPkGIkEl7tinhGXbHH5G1cBNyZQvXJ4J3BFZvg74ezj/38BTkW0HABV8FqD+A5wb2X4WsDKSr0+B7HC5Q/g5HxdJPw/4cj3/CzvDcm0G1ofr/0jQ9BdL157gi8qAcNmAUyPbHyAMmpF1Swm+sH2OIHidDuTGpRmHB6iEkzfxtU4bgG7a93bxj+KW/0wQLAAuDZcBkHSOpH+HTSGbgXOBbiTWK+7YH0Tm+xN8C14TNpNsJqhNHVhPPp/gs2a+y4DHwzxlSxov6T+SthJcnKknX9H8rbLw6hGfR0ntJP0hbI7aCswCOitohuwLbDSzTfEHbWC/XuF+2+LO2TtB/roR1LL+U0fea/NqZjUE73X0OGsj858mWG6f4Lgxq82sM8E9qN8Q1DKSKV/Mx5H5TyLn2u1vwsx2EPwdJyxXON8rsrzBzKojZUhUzvrKdY+ZdQ6n2N9H/Hu5PcxT9L2M/h33B74X+7sN/3b7EtSalgM3EQSjdZKeijYXusQ8QLVO/yL4RvjletLsIGiKiemZIE18V/fPAqeE9xVGEAao8F7Ac8A9QI/wAjaVoLkvkTUE/7gx/SLzHxF8O+8WuWB0NLOE945CTwCnSTqe4Am5WOC8lOChkNMJmv4GhOvrylc0f72l3Z4OjObxewRNNseZWUeCGlfsuB8BXSR1TnDc+vZbHe7XIe6cqxIcZz3B53twgm2rCS6UwYGDMvSt4zh7zcx2AbcBR0n6cri6vvI1ZLe/CUntCJoMY3YrF8F7s3qvMp+8+PfygDBP0fcy+j/yEfDzyN9tZzNrZ2Z/ATCzP5vZieExDfjfBMdwER6gWiEz20LQZHJ/eLO4naTcsJZzd5isFDhXwQ39ngTf7ho6bjlBM82jwPtm9k64KY+gnb0cqJJ0DkGzXV2eAW6U1Ce8IT82co41wDTgXkkdJWVJOlhS/JN60Xx9QND8+BdgupnFvqV3IAh2GwiC8f80VMbQvwjuadyo4JH1i4Chke0dCL6Rb5bUBfhJXP5fAn4fPjSQK+mkJPb7iKAZ8ReS2oQ3168CJiYobw3wCPBLBQ9WZEs6Pvyi8AwwPLwBn0sQNHaFx04pM6sA7iX4W6u3fEn4K3CepBMl5RHcc4pen/4C3CGpe/hgxX8D6X40+8/AaElF4Xv7P8AbZrayjvQPAddKOk6BAyQNl9RB0mAFv33LJ/hy8SlBEykENb0Bkvx6HMffkFbKzH4J3ALcQRA4PgLGENwbAngSWEDQ7DWN4KZ+Mv5MUCOpbd4Lm6VuJLg4biKouUyu5xgPAS+H558PPB+3/XKCoPd2eLy/Etzbqc/jBN9Mn4ise4KgiWZVeKx/N3AMoPbCexHwzfD8I+Py+CuCm+Lrw2PGP85+GcG9io8I7qPclOR+owhqeasJHqH/iZlNryObtwKLgLkET9L9L5BlZkuBbxDc0F8PnA+cH5YpHR4B+kk6n4bLVyczWwJcT/B3tYbgfS+LJPkZUAIsJCj3/HBd2pjZKwT39J4L83QwcEk96UsI7oH+jiD/ywn+hiD4Ajee4L35mKDJOvZk4bPh6wZJ81NaiBZOuzezO+dSJWwSesbMhjeY2Dm3B69BOZcGYXCqAD4XNlk55xrJA5Rz6XE6sAVYlsbmNedaNW/ic845l5G8BuWccy4j7RcdHHbr1s0GDBjQ3NlwzjmXwLx589abWff49ftFgBowYAAlJSXNnQ3nnHMJSPog0Xpv4nPOOZeRPEA555zLSB6gnHPOZSQPUM455zKSByjnnHMZKW0BStIjCoZfXlzHdkn6jYLhlBdKOjay7exwSOTlksZG1neRNF3Se+Frg0NTO+eca5nSWYN6jGDo8bqcAwwKp6sJRqMkHNzs/nD74cAoSYeH+4wFXjGzQcArRIZpcM4517qk7XdQZjZL0oB6klwIPBGOWvpvSZ0lFRIMN7DczFYASHoqTPt2+HpKuP/jBGMT3ZaO/Md8/PHHrFixIjY0c51DE+/ttnQdN7bNOefSKScnh8suuyw9x07LUZPTm92HSy4L1yVaf1w43yMcEA4zWyOpzmHAJV1NUDOjX79+dSVr0KRJk7juuuv2en/nnGvN2uXDZRedBAf0bzhxIzVngEo0DLTVs75RzGwCMAGguLh4r6sSw4cP5+9P3IGW/IzYAOBSkMndXgUoCyGUpc9elYXCBCILZQXLwfTZPMrabTlIl/XZtt2OFx6HcFvtMSOvWVmAwlfnnEsP5bSDvK5pOXZzBqgyoG9kuQ/BSKJ5dawHWCupMKw9FQLr0p3Jfv360e+yu4C70n0q55xzEc359XoycHn4NN8XgC1h891cYJCkgeFAb5fw2fDhk4ErwvkrgL81daadc841jbTVoCT9heCBhm6SyoCfALkAZvYgMBU4F1gOfAKMDrdVSRoDvAxkA4+Y2ZLwsOOBZyRdBXwIXJyu/DvnnGte+8WAhcXFxea9mTvnXGaSNM/MiuPX+x1055xzGckDlHPOuYzkAco551xG8gDlnHMuI3mAcs45l5E8QDnnnMtIHqCcc85lJA9QzjnnMpIHKOeccxnJA5RzzrmM5AHKOedcRvIA5ZxzLiN5gHLOOZeRPEA555zLSB6gnHPOZSQPUM455zJSWgOUpLMlLZW0XNLYBNsLJE2StFDSm5KODNcPllQambZKuincNk7Sqsi2c9NZBuecc80jnUO+ZwP3A2cAZcBcSZPN7O1IstuBUjMbIenQMP1pZrYUKIocZxUwKbLffWZ2T7ry7pxzrvmlswY1FFhuZivMrAJ4CrgwLs3hwCsAZvYuMEBSj7g0pwH/MbMP0phX55xzGSadAao38FFkuSxcF7UAuAhA0lCgP9AnLs0lwF/i1o0JmwUfkVSQuiw755zLFOkMUEqwzuKWxwMFkkqBG4C3gKraA0h5wAXAs5F9HgAOJmgCXAPcm/Dk0tWSSiSVlJeX72URnHPONZe03YMiqDH1jSz3AVZHE5jZVmA0gCQB74dTzDnAfDNbG9mndl7SQ8CLiU5uZhOACQDFxcXxgdE551yGS2cNai4wSNLAsCZ0CTA5mkBS53AbwLeAWWHQihlFXPOepMLI4ghgccpz7pxzrtmlrQZlZlWSxgAvA9nAI2a2RNK14fYHgcOAJyRVA28DV8X2l9SO4AnAa+IOfbekIoLmwpUJtjvnnGsFZNb6W7+Ki4utpKSkubPhnHMuAUnzzKw4fr33JOGccy4jeYByzjmXkTxAOeecy0geoJxzzmUkD1DOOecykgco55xzGckDlHPOuYzkAco551xG8gDlnHMuI3mAcs45l5E8QDnnnMtIHqCcc85lJA9QzjnnMpIHKOeccxnJA5RzzrmM5AHKOedcRvIA5ZxzLiOlNUBJOlvSUknLJY1NsL1A0iRJCyW9KenIyLaVkhZJKpVUElnfRdJ0Se+FrwXpLINzzrnmkbYAJSkbuB84BzgcGCXp8LhktwOlZjYEuBz4ddz2L5lZUdxQwGOBV8xsEPBKuOycc66VSWcNaiiw3MxWmFkF8BRwYVyawwmCDGb2LjBAUo8Gjnsh8Hg4/zjw5ZTl2DnnXMZIZ4DqDXwUWS4L10UtAC4CkDQU6A/0CbcZME3SPElXR/bpYWZrAMLXAxOdXNLVkkoklZSXl+9zYZxzzjWtdAYoJVhnccvjgQJJpcANwFtAVbjtBDM7lqCJ8HpJJzXm5GY2wcyKzay4e/fujcu5c865ZpeTxmOXAX0jy32A1dEEZrYVGA0gScD74YSZrQ5f10maRNBkOAtYK6nQzNZIKgTWpbEMzjnnmkk6a1BzgUGSBkrKAy4BJkcTSOocbgP4FjDLzLZKOkBShzDNAcCZwOIw3WTginD+CuBvaSyDc865ZpK2GpSZVUkaA7wMZAOPmNkSSdeG2x8EDgOekFQNvA1cFe7eA5gUVKrIAf5sZn8Pt40HnpF0FfAhcHG6yuCcc675yCz+tlDrU1xcbCUlJQ0ndM451+QkzYv7ORHgPUk455zLUB6gnHPOZSQPUM455zKSByjnnHMZyQOUc865jOQByjnnXEZKOkCFP5h1zjnnmkSDAUrSMElvA++Ey0dL+n3ac+acc26/lkwN6j7gLGADgJktABrVcatzzjnXWEk18ZnZR3GrqtOQF+ecc65WMn3xfSRpGGBhx643Ejb3Oeecc+mSTA3qWuB6gsEGy4CicNk555xLm3prUJKygV+Z2debKD/OOecc0EANysyqge6RMZucc865JpHMPaiVwBxJk4EdsZVm9st0Zco555xLJkCtDqcsoEN6s+Occ84FGgxQZnYnQDgEu5nZ9mQPLuls4NcEI+o+bGbj47YXAI8ABwM7gSvNbLGkvsATQE+gBphgZr8O9xkHfBsoDw9zu5lNTTZPzjnnWoZkepI4UtJbwGJgiaR5ko5IYr9s4H7gHOBwYJSkw+OS3Q6UmtkQ4HKCYAZQBXzPzA4DvgBcH7fvfWZWFE4enJxzrhVK5jHzCcAtZtbfzPoD3wMeSmK/ocByM1thZhXAU8CFcWkOB14BMLN3gQGSepjZGjObH67fRvC7q95Jlcg551yrkEyAOsDMZsQWzGwmkEzHsb2BaA8UZewZZBYAFwFIGgr0B/pEE0gaABwDvBFZPUbSQkmPhM2Ee5B0taQSSSXl5eWJkjjnnMtgyQSoFZJ+LGlAON0BvJ/EfkqwzuKWxwMFkkqBG4C3CJr3ggNI7YHngJvMbGu4+gGCe1ZFwBrg3kQnN7MJZlZsZsXdu3dPIrvOOecySTJP8V0J3Ak8Hy7PAkYnsV8Z0Dey3IfgacBaYdAZDSBJBIHv/XA5lyA4TTSz5yP7rI3NS3oIeDGJvDjnnGthknmKbxNB/3uNNRcYJGkgsAq4BLg0mkBSZ+CT8B7Vt4BZZrY1DFZ/BN6J/72VpEIzWxMujiB4eMM551wrk8xTfNPDQBJbLpD0ckP7mVkVMAZ4meAhh2fMbImkayVdGyY7jODJwHcJnvb7brj+BOAy4FRJpeF0brjtbkmLJC0EvgTcnFRJnXPOtSjJNPF1M7PNsQUz2yTpwGQOHj4CPjVu3YOR+X8BgxLsN5vE97Aws8uSObdzzrmWLZmHJGok9YstSOrPng87OOeccymVTA3qR8BsSf8Ml08Crk5flpxzzrnkHpL4u6RjCXp0ALjZzNanN1vOOef2d3U28UnqL6kTQBiQdgBnAJf78BvOOefSrb57UM8Q9hghqQh4FvgQOBr4fdpz5pxzbr9WXxNfWzOL/bD2G8AjZnavpCygNO05c845t1+rrwYVfcz7VD7r1LUmrTlyzjnnqL8G9aqkZwj6uysAXoWgJwegogny5pxzbj9WX4C6CRgJFAInmllluL4nwaPnzjnnXNrUGaDMzAjGcIpf/1Zac+Scc86RXE8SzjnnXJPzAOWccy4jJdOb+Xnho+XOOedck0km8FwCvCfpbkmHpTtDzjnnHCQRoMzsG8AxwH+ARyX9S9LVkjqkPXfOOef2W0k13YVDsz9H8FRfIcFItvMl3ZDGvDnnnNuPJXMP6nxJkwh+qJsLDDWzcwj65Lu1gX3PlrRU0nJJYxNsL5A0SdJCSW9KOrKhfSV1CUf5fS98LWhEeZ1zzrUQydSgLgbuM7MhZvb/zGwdgJl9AlxZ106SsoH7CYZyPxwYJenwuGS3A6VmNgS4HPh1EvuOBV4xs0EE3S/tEficc861fMkEqJ8Ab8YWJLWVNADAzF6pZ7+hwHIzW2FmFQTNgxfGpTmcz/r4excYIKlHA/teCDwezj8OfDmJMjjnnGthkglQzwLRDmKrw3UN6Q18FFkuC9dFLQAuApA0FOgP9Glg3x5mtgYgfD0w0cnDBzlKJJWUl5cnkV3nnHOZJJkAlRPWYgAI55MZsFAJ1lnc8nigQFIpcAPwFlCV5L71MrMJZlZsZsXdu3dvzK7OOecyQINDvgPlki4ws8kAki4EkhnyvQzoG1nuA6yOJgifDhwdHlfA++HUrp5910oqNLM1Yc/q65LIi3POuRYmmRrUtcDtkj6U9BFwG3BNEvvNBQZJGhgOEX8JMDmaQFLnyPDx3wJmhUGrvn0nA1eE81cAf0siL84551qYBmtQZvYf4AuS2gMys23JHNjMqiSNAV4GsglG5F0i6dpw+4PAYcATkqqBt4Gr6ts3PPR44BlJVxEMQX9x8sV1zjnXUigYVaOBRNJw4AigTWydmf00jflKqeLiYispKWnubDjnnEtA0jwzK45fn8wPdR8kGLjwBoKHFy4meNrOOeecS5tk7kENM7PLgU1mdidwPLs/wOCcc86lXDIBamf4+omkXkAlMDB9WXLOOeeSe8z8/yR1Bv4fMJ/g90gPpTNTzjnnXL0BKhyo8BUz2ww8J+lFoI2ZbWmKzDnnnNt/1dvEZ2Y1wL2R5V0enJxzzjWFZO5BTZP0lbCnB+ecc65JJHMP6hbgAKBK0k6CR83NzDqmNWfOOef2a8n0JOFDuzvnnGtyDQYoSSclWm9ms1KfHeeccy6QTBPf9yPzbQgGE5wHnJqWHDnnnHMk18R3fnRZUl/g7rTlyDnnnCO5GlS8MuDIVGfEOedc/cyMWAffieYbuxy/raEp0bEACgsLycnZm3BSv2TuQf2Wz0azzQKKCIZqd85lODOjpqamdqqurt5jOTbFls2M6K9KYvPxr7H5urZHX+tbl8w5kt0WLXf0NdG6xmxLtD3Zdft6rvj5+LLXJbY99nkmOkYyo1k0RBJVVVXNE6CA6DgVVcBfzGxOynPinNtDfICJDzTxwSWaJnqxS3QxS8XFKR2S+cll7IIbfxGuaz6Zsmbq+1GXhvLbUIBLlXT+RDaZAPVXYKeZVYeZyZbUzsw+SVuunGslGgowiWox6QgwLeni25hgUtdFuKkuzi69kglQrwCnA9vD5bbANGBYQztKOhv4NcGouA+b2fi47Z2APwH9wrzcY2aPShoMPB1JehDw32b2K0njgG8D5eG2281sahLlcC4pscAQDRSJgkxdASeWfn8NMM6lSjIBqo2ZxYITZrZdUruGdpKUDdwPnEHwYMVcSZPN7O1IsuuBt83sfEndgaWSJprZUoJ7XbHjrAImRfa7z8zuSSLvbj/RUECJrouvrcQHlLqCSrSpqLEBwwOMc42XTIDaIelYM5sPIOm/gE+T2G8osNzMVoT7PQVcCEQDlAEdwn7+2gMbCe5zRZ0G/MfMPkjinK4FMzOqq6upqqqqnRLdW0kUWGLib6DvbUBJtI8HGeeaVjIB6ibgWUmrw+VCgiHgG9Ib+CiyXAYcF5fmd8BkYDXQARhpQQ/qUZcAf4lbN0bS5QQPcHzPzDYlkR/XzGpqanYLPpWVlbVTrFYTe7or/jHWZPm9B+daj2R+qDtX0qHAYIKOYt81s8okjp3o0Y74K8ZZQClBrxQHA9MlvWZmWwEk5QEXAD+M7PMAcFd4rLsIhgO5co+TS1cDVwP069cviey6fRGrzcQCT6IAFHuiqr4AtLeByTnX+iTzO6jrgYlmtjhcLpA0ysx+38CuZUDfyHIfgppS1GhgvAVXpOWS3gcOBd4Mt58DzDeztbEdovOSHgJeTHRyM5sATAAoLi72K94+MrPdaj7RAFRVVVVb+4mmr+s4HoCcc8lIponv22Z2f2zBzDZJ+jbQUICaCwySNJDgIYdLgEvj0nxIcI/pNUk9CGppKyLbRxHXvCep0MzWhIsjgMVJlMHVI1r7iU0VFRW7BZ+ampoGA5AHHudcKiUToLIkKazlxJ6qy2toJzOrkjQGeJngMfNHzGyJpGvD7Q8SNNE9JmkRQZPgbWa2PjxPO4InAK+JO/TdkooImvhWJtju4kRrP/FNb7EABLv/8ryu4zjnXFNJJkC9DDwj6UGCoHAt8PdkDh7+Pmlq3LoHI/OrgTPr2PcToGuC9Zclc24Hn376KevWraOqqirp5jfn9jfxP5Zujin+adSoVPy/7s0xkt2Wm5vLnXfemXReGiOZAHUbwcMG3yGo5UwDHkpLblxKVFdXs379enbs2LFPj1k7l0gyP1yO/zlA7CGZxuxX1/71HWtvgkOq/zeys7MbnHJycsjPz69dzsrKStjHYEPqS5eObYnSZWdnJ5V+byTzFF8N8GA4IelE4LcEP7J1GcTM2LFjB+Xl5dTUxD+t71q7mpoaKisrqaioqL2HmGi+vm2xJy7rCxDN9WVHUu2FPDs7u3Y5OsUHgry8vKQCRqqm+ECzP8jKykrbsZPqfja85zOK4PdP7wPPpy1Hbq9UVVWxbt06du7c6bWlFqKmpqbRAaS+bVVV8b9xr1tubi55eXnk5eXVzrdv357c3NzaC210igWFhgJEMtPe7r+/XfhdPQFK0iEET96NAjYQ9I0nM/tSE+XNJcHM2Lp1Kxs2bPDA1ATMjMrKSnbt2kVFRQW7du2qnaLLydRUGhNQ4oNJXl4eHTp0SLi+oeXc3Fy/2LsWob4a1LvAa8D5ZrYcQNLNTZIrl5SKigrWrl1LZWWlB6ckRINLoqCSTNDZtWtXg++1pIRBom3btnUGjPqCS05OjgcUt1+qL0B9haAGNUPS34GnSNw7hGtiZsamTZvYvHnzfhOYzKw2QOxNUInNJxNc8vPzycvLIz8/n/z8fDp06EC3bt1ql6PbEi17DcW51KgzQJnZJGCSpAOALwM3Az0kPQBMMrNpTZNFF7Vz507Wrl2blqePmouZsX37djZu3MimTZtqX7dv375bkGlILLhEg0bHjh2TCiqxZQ8uzmWOZJ7i2wFMBCZK6gJcDIwleNzcNZGamho2bNjAtm3bWmxgqqioqA1A8cEoej8mNzeXgoICOnXqlFRQiU3eFOZc69KoQeTNbCPwh3ByTeSTTz5h7dq1LaIfu5qaGrZu3bpb8InWiKI6depEQUEBffv2paCggC5dulBQUED79u090DjnGhegXNOqrq6mvLycTz75JOMC06effrpb8InNb968ubbrJIA2bdpQUFBA//79KSgoqA1EnTt3JifH//ycc3XzK0QGMjO2bdvG+vXrmzUwVVdXs3nz5oS1oU8//WzMyqysLDp16kSXLl0YOHBgbU2oS5cutG3b1mtDzrm94gEqw1RWVrJu3bqkHmdOBTPjk08+2ePeUKKnBNu1a0eXLl343Oc+VxuEYveK0tndiXNu/+QBKkOYGVu2bGHjxo1pCUyVlZVs3rx5j5rQpk2bdntCLicnh86dO9O9e3cOOeSQ3QJRmzZtUp4v51qiWKtAXSMARJdjg3TGT7HeMWI9ZcT2i95rrms5eo6GXuvLf33bYgOMNtRpbDq/SHuAygC7du1i7dq1VFVVpfTDXrp0KYsWLWLTpk1s3bp1t20dOnSgoKCAQw89lC5dutQGoo4dO3qTnGvR0hE84pejaeLTx6/LBHUFuH2Zj77m5TU4AtNe8QDVjGpqati0aRNbtmxJaWCqrKzk1VdfZfHixRQUFNCrVy+OPPLI3Z6Uy83NTdn5nNsb9V286woiiQJHoj77WlLwaArxQbul8ADVTD799FPWrl2b8t6hy8vLefHFF9m4cSPHHXccw4YNS2tvw671i17c4pt96quNJOocNtoRbaKAkyiguP2XB6gmVl1dzYYNG9i+fXtKA5OZsWDBAmbOnEmbNm24+OKL6devX8qO7zJL/IU72eas2GtdtZLYa7Tn8oaCiAcSly5pDVCSzgZ+TTDk+8NmNj5ueyfgT0C/MC/3mNmj4baVwDagGqgys+JwfReCntUHEAz5/jUz25TOcqTKjh07WLduXcrHatq5cyfTpk3jvffeY8CAAZxzzjm0a9cupedwyUkUOKJBIj6A1HUPJFHgiA5RkShdQ9uca2nSFqAkZQP3A2cAZcBcSZPN7O1IsuuBt83sfEndgaWSJppZRbj9S2a2Pu7QY4FXzGy8pLHh8m3pKkcqpHOsplWrVjFlyhR27NjBSSedRHFxsV+M9lF8kxZ8Fljim6+ig+Tl5OQkvB9SV/Dwz8m5+qWzBjUUWG5mKwAkPQVcCEQDlAEdFPyntgc2Ag0NknMhcEo4/zgwkwwNUOkcq6mmpoa5c+cyZ84cOnbsyCWXXEJhYWFKz9GSJbr4Jwoysaas+FFRo/dK4u+bOOeaRjoDVG/go8hyGXBcXJrfAZOB1UAHYGQ4xDwEwWuaJAP+YGYTwvU9zGwNgJmtkXRgopNLuhq4GmiWezGVlZWsXbs2qSEeGmvHjh1MnTqVDz/8kMGDB3PGGWeQn5+f0nNkgoZqMvUN9Z0ouHiQca5lSWeASnQViL9SnwWUAqcCBwPTJb1mZluBE8xsdRiApkt618xmJXvyMKBNACguLm6y/oLMrLZ7oHT8gG3lypW89NJLVFRUcOaZZ3LkkUe2igtutAy5ubnk5+fTpk2bhMHGm8ec2z+kM0CVAX0jy30IakpRo4HxFlzJl0t6HzgUeNPMVgOY2TpJkwiaDGcBayUVhrWnQmBdGsvQKLt27eLjjz9Oy1hN1dXVzJ49m5KSErp168bXvvY1unbtmtJzNJVYjSgrK6t2pNnY8Bk+ZIZzLiadAWouMEjSQGAVwei8l8al+RA4DXhNUg9gMLBCwSCJWWa2LZw/E/hpuM9k4ApgfPj6tzSWISk1NTVs3LiRrVu3pqXWtHnzZqZMmcLHH3/M0Ucfzcknn9wifmgbffQ5JyeH/Pz83YY99/77nHP1SVuAMrMqSWOAlwkeM3/EzJZIujbc/iBwF/CYpEUETYK3mdl6SQcRjOYby+Ofzezv4aHHA89IuoogwF2crjIk45NPPql9dDwdwendd99l+vTpSOL888/nkEMOSfk5UiFa68nLy6NNmza1taK8vDyvFTnnGk2ZNs5QOhQXF1tJSUlKj5nusZoqKyuZMWMGixYtorCwkOHDh9OpU6eUn6exorWi7Ozs3YJRfn5+7W91nHMuWZLmxX7rGuU9STSSmbFjxw7Ky8tT/oPbmPLycqZMmcKGDRsYOnQow4YNa5bmsGgwys3N3S0Q5eXleRdKzrm08gDVCFVVVaxduzZtYzWZGQsXLmTmzJnk5eXxla98hQEDBqT8PInEP7gQbaLLzc31WpFzrsl5gEpCusdqgqC7ounTp7Ns2TL69+/POeecwwEHHJDy88Q/uBB7ii4vL6+2ic455zKBB6gkrF+/nm3btqUtOK1evZopU6awfft2vvjFL/L5z38+ZTWW2HGivy3Kz88nNzfXm+iccxnNA1QSKisr09akN3fuXGbPnk2HDh1S3l2RJLp27eqDEDrnWiQPUM1kx44dvPTSS3zwwQcccsghnHHGGSkdUj0rK4uePXvStm3blB3TOeeakgeoZhDtruiMM87gqKOOSmkNJycnh169erWIH/M651xdPEA1oerqaubMmcPcuXPp2rUrF198Md26dUvZ8SXRpk0bevbs6feXnHMtngeoJrJlyxamTJnCmjVrGDJkCKecckpKaziS6NSpE126dPH7Tc65VsEDVBNYunQp06dPx8w477zzGDx4cEqPL4nu3bvToUOHlB7XOeeakweoNKqsrGTmzJksXLiQnj17ct5556W8u6KsrCwKCwtT+oCFc85lAg9QabJ+/XpefPFFNmzYwOc//3lOOOGElP4IVlLtwxA5Of4xOudaH7+ypZiZsWjRImbMmJG27ook0bZtW3r06OEPQzjnWi0PUCm0a9cupk2bxrJly+jXrx/nnntuyrsrkkTnzp0pKCjwhyGcc62aB6gUWbNmDS+++CLbtm3jxBNPZOjQoSkPIJLo0aNHWvroc64hlZWVlJWVsXPnzubOimuh2rRpQ58+fZJ+gtkD1D6KdVc0Z84c2rdvzyWXXEKvXr1Sfp7s7GwKCwvJz89P+bGdS0ZZWRkdOnRgwIABXnt3jWZmbNiwgbKyMgYOHJjUPmm9gSHpbElLJS2XNDbB9k6S/k/SAklLJI0O1/eVNEPSO+H670b2GSdplaTScDo3nWWoz44dO3j++ed57bXXOPjgg7nssstSHpwkkZeXR58+fTw4uWa1c+dOunbt6sHJ7ZVY36CNqYGnrQYlKRu4HzgDKAPmSppsZm9Hkl0PvG1m50vqDiyVNBGoAr5nZvMldQDmSZoe2fc+M7snXXlPxgcffMDUqVPZtWsXp59+OkOGDElLk94BBxzAgQce6BcFlxH879Dti8b+/aSziW8osNzMVgBIegq4EIgGKAM6KMh1e2AjUGVma4A1AGa2TdI7QO+4fZtFdXU1r7/+Om+++SZdunThq1/9Kt27d0/5eSTRpUsXOnXq5BcF59x+KZ1NfL2BjyLLZeG6qN8BhwGrgUXAd81st3HUJQ0AjgHeiKweI2mhpEckFSQ6uaSrJZVIKikvL9+3koS2bNnC008/zZtvvslRRx3FN77xjbQFp549e9K5c2cPTs6FNmzYQFFREUVFRfTs2ZPevXvXLldUVNS7b0lJCTfeeGOD5xg2bFiqsutSIJ01qERX1vhBlc4CSoFTgYOB6ZJeM7OtAJLaA88BN8XWAQ8Ad4XHugu4F7hyjxOZTQAmABQXF+/zYE7Lli1j2rRpmBnDhw/n0EMP3ddDJpSdnU2vXr3Iy8tLy/Gda6m6du1KaWkpAOPGjaN9+/bceuuttdurqqrq/NF6cXExxcXFDZ7j9ddfT0leU62+srVm6SxxGdA3styHoKYUNRoYb8FogMslvQ8cCrwpKZcgOE00s+djO5jZ2ti8pIeAF9OUfwAqKiqYOnUq8+fPp2fPngwfPpzOnTun/DyxhyEKCwt92HWX8W666abaYJEqRUVF/OpXv2rUPt/85jfp0qULb731FsceeywjR47kpptu4tNPP6Vt27Y8+uijDB48mJkzZ3LPPffw4osvMm7cOD788ENWrFjBhx9+yE033VRbu2rfvj3bt29n5syZjBs3jm7durF48WL+67/+iz/96U9IYurUqdxyyy1069aNY489lhUrVvDii7tfhpYsWcLo0aOpqKigpqaG5557jkGDBvHEE09wzz33IIkhQ4bw5JNP8sEHH3DllVdSXl5O9+7defTRR+nXr98eZbvuuuu4/vrrKS8vp127djz00ENp+6KcKdIZoOYCgyQNBFYBlwCXxqX5EDgNeE1SD2AwsCK8J/VH4B0z+2V0B0mF4T0qgBHA4jSWgRkzZjB//nyKi4s58cQT0xI8JNG+fXu6d+/uTXrONdKyZcv4xz/+QXZ2Nlu3bmXWrFnk5OTwj3/8g9tvv53nnntuj33effddZsyYwbZt2xg8eDDf+c539vhtzltvvcWSJUvo1asXJ5xwAnPmzKG4uJhrrrmGWbNmMXDgQEaNGpUwTw8++CDf/e53+frXv05FRQXV1dUsWbKEn//858yZM4du3bqxceNGAMaMGcPll1/OFVdcwSOPPMKNN97ICy+8sEfZTjvtNB588EEGDRrEG2+8wXXXXcerr76a2jczw6QtQJlZlaQxwMtANvCImS2RdG24/UGCJrrHJC0iaBK8zczWSzoRuAxYJKk0POTtZjYVuFtSEUET30rgmnSVAeDUU0+lQ4cO9OjRIy3Hjz16mepOZJ1Lp8bWdNLp4osvrv3iuGXLFq644gree+89JFFZWZlwn+HDh5Ofn09+fj4HHngga9eupU+fPrulGTp0aO26oqIiVq5cSfv27TnooINqf8czatQoJkyYsMfxjz/+eH7+859TVlbGRRddxKBBg3j11Vf56le/WjsGXJcuXQD417/+xfPPB41El112GT/4wQ/2KNv27dt5/fXXufjii2u37dq1a6/er5YkrY2aYUCZGrfuwcj8auDMBPvNJvE9LMzsshRns165ubkMGDCATz/9NOXHlkRhYaEPy+7cPoj2rPLjH/+YL33pS0yaNImVK1dyyimnJNwn+pvC7OxsqqqqkkoT3I1o2KWXXspxxx3HlClTOOuss3j44Ycxs6RaSKJpYmWrqamhc+fOKW9WzXTe02gzycnJoW/fvh6cnEuhLVu20Lt38LDwY489lvLjH3rooaxYsYKVK1cC8PTTTydMt2LFCg466CBuvPFGLrjgAhYuXMhpp53GM888w4YNGwBqm/iGDRvGU089BcDEiRM58cQT9zhex44dGThwIM8++ywQ9MqwYMGCVBcv43iAamKxYdn79u2b0hF1nXPwgx/8gB/+8IeccMIJVFdXp/z4bdu25fe//z1nn302J554Ij169EjYPP/0009z5JFHUlRUxLvvvsvll1/OEUccwY9+9CNOPvlkjj76aG655RYAfvOb3/Doo4/WPjTx61//OuG5J06cyB//+EeOPvpojjjiCP72t7+lvHyZRslWWVuy4uJiKykp2ev9V69enZImPkl07NjRu4txLdI777zDYYcd1tzZaHbbt2+nffv2mBnXX389gwYN4uabb27ubLUYif6OJM0zsz1+B+A1qCYiiW7dutGtWzcPTs61YA899BBFRUUcccQRbNmyhWuuSetzWvu1/e+XX83Ah2V3rvW4+eabvcbURDxApVFsWPbCwkK/3+Scc43kASpNYg9D9OzZ04dld865veABKg0k0alTJ7p06eL3m5xzbi95gEoxSXTv3p0OHTo0d1acc65F87anFMrKyqJ3794enJxLk48//phLLrmEgw8+mMMPP5xzzz2XZcuWNXe29vDYY48xZswYIOiX74knntgjzcqVKznyyCPrPc7KlSv585//XLuc7LAhrYXXoFJAErm5uRQWFu6XXeI71xTMjBEjRnDFFVfU9rxQWlrK2rVrOeSQQ2rTVVdXZ9SIANdee+1e7xsLUJdeGvSzneywIU0tXe+5X033kSTatWvHgQce6A9DuP3Gs88+S1lZWUqP2adPn906Q403Y8YMcnNzd7vgFxUVATBz5kzuvPNOCgsLKS0tZf78+XznO9+hpKSEnJwcfvnLX/KlL30p4TAYvXr14mtf+xplZWVUV1fz4x//mJEjR9aeo6amhoMOOojS0tLaoXY+97nPMWfOHN58801+9rOfUVFRQdeuXZk4ceIeHUtHx66aN28eV155Je3a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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# PLOTAGEM DA CURVA DE VALIDAÇÃO DE PARÂMETRO\n", + "\n", + "plt.plot(range_estimators, train_mean, label=\"Training score\", color=\"black\")\n", + "plt.plot(range_estimators, test_mean, label=\"Cross-validation score\", color=\"dimgrey\")\n", + "\n", + "plt.fill_between(range_estimators, train_mean - train_std, train_mean + train_std, color=\"orange\")\n", + "plt.fill_between(range_estimators, test_mean - test_std, test_mean + test_std, color=\"gainsboro\")\n", + "\n", + "plt.title(\"Curva de Validação com Random Forest\")\n", + "plt.xlabel(\"Numero de interações\")\n", + "plt.ylabel(\"Accuracy Score\")\n", + "plt.tight_layout()\n", + "plt.legend(loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "72c98870-08d5-4fb1-af6f-b0f021561df9", + "metadata": {}, + "source": [ + "## Curva de Aprendizado" + ] + }, + { + "cell_type": "markdown", + "id": "11a59c27-f332-4760-8604-c7534b8fd87e", + "metadata": {}, + "source": [ + "-> A Learning Curve realiza o treinamento através de validação cruzada com diferentes tamanhos de dados de treino e faz a avaliação.
\n", + "-> Através desta curva pode-se concluir que o modelo provavelmente apresentaria melhores resultados com mais dados para treino.
\n", + " Pois a curva de aprendizado ainda não se estabilizou lateralmente. " + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "94478907-a467-4a5e-a9c4-d85b4c481cf8", + "metadata": {}, + "outputs": [], + "source": [ + "# EXECUÇÃO DO ALGORITMO DE CURVA DE APRENDIZADO\n", + "\n", + "train_sizes, train_scores, test_scores = learning_curve(RandomForestClassifier(n_estimators=200, criterion='gini', max_features='log2', min_samples_leaf=1), \n", + " x_balanced, y_balanced, \n", + " cv = 5, \n", + " scoring = 'accuracy', \n", + " train_sizes = np.linspace(0.1, 1.0, 10))" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "0f424d9c-5643-439a-b14b-6725e7107fac", + "metadata": {}, + "outputs": [], + "source": [ + "# OBTENDO MÉDIAS E DESVIO PADRÃO PARA PLOTAGEM\n", + "\n", + "train_mean = np.mean(train_scores, axis=1)\n", + "train_std = np.std(train_scores, axis=1)\n", + "\n", + "test_mean = np.mean(test_scores, axis=1)\n", + "test_std = np.std(test_scores, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "28ce900e-202f-4314-af83-fcab109d9f59", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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8uZaGiL8//7v/3A4HBx11FGUlpbutm5ycjILFizgo48+Yvbs2VxwwQXcd999HH/88XTr1o0hQ4YANA3Guaf3E+C73/1u04fJmTNnMm3aNB588EEgFIobN26M2hAtXTsggkG0dCm+1e+ia98nvqSI1MZaABrS+1J9xHl484fgzRuMxu9+NzcRaTqdVVVxOBxNAdD8y+Vy4XQ6LRBMTBswYACvvPLKHp9v/il1T2O4XXTRRQwbNow333yT0aNH8/TTTzNy5EgWLFjAjBkzGD9+PGeccQajR49uGkJj4sSJnHPOOfTp04cPPviAV199lblz5wKh5qM33niDY489lsmTJ/P++++3+Br29DfW2mHKW7vt5kPh7Om9cDqdjBgxghEjRjBw4ED++c9/Mnjw4Ig1tjQm3q7v+6uvvrrTHfSiqWsFhCqUr4X1HxBc9wGs/whH/TYSAF9KL2oKzsSbPxRvXiFBTyixm36YqojIbgGwY9rlclkAmA5t5MiR3H777Tz11FNNzTpFRUVNowA0d8oppzBlyhRGjhzJ6tWr2bhxI/369WPdunUceuih3Hjjjaxbt47FixfTv39/MjMzueSSS0hOTmby5Mncddddu913YezYsdx8880cdthhTTcSqq6uplu3bjQ2NjJlypSmocYj6d+/P+vXr2ft2rUcdthhvPDCC03P7WmY8pSUFKqrqyNub8cQ4Zdeeukehwjfk1WrVuFwOJqOZhYtWkTv3r3p378/mzZtoqioiCFDhlBdXY3H49nj+7lw4cKdtjt69Ggef/xxHn/8cUSEzz//nOOOO67Vde2rrhMQq95C37wZqQpdzB1MzMXbfTjebkOo7zYMf2LoVFOn00m8y0V8fPxuAWB3dTOdmYjw+uuvM27cOO677z7cbnfTaa7ffPPNTsv+4he/4JprrmHgwIG4XC4mT55MQkICL774Is8//zxxcXHk5+dz1113UVRUxK9//WscDgdxcXH87W9/i7j/888/n5tuuonHH3+8ad7vfvc7hg0bRu/evRk4cOAe/5kDuN1uJk2axPe//32ys7M56aSTWLp0KRAapvyyyy7j4YcfZuTIkU3rnHbaadx3330MGjSI8ePH77S9xx57jCuuuIIHHnigqZO6tWpqarjhhhuoqKjA5XJx+OGHM2nSJOLj43nxxRe54YYbmjrMZ82atcf3c1d33nkn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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# PLOTAGEM DA CURVA DE APRENDIZADO\n", + "\n", + "plt.plot(train_sizes, train_mean, label='Training Score')\n", + "plt.plot(train_sizes, test_mean, label='Cross-Validation Score')\n", + "\n", + "plt.fill_between(train_sizes, train_mean-train_std, train_mean+train_std, color='gray')\n", + "plt.fill_between(train_sizes, test_mean-test_std, test_mean+test_std, color='#DDDDDD')\n", + "\n", + "plt.title(\"Learning Curve\")\n", + "plt.xlabel(\"Training Size\")\n", + "plt.ylabel(\"Accuracy Score\")\n", + "plt.legend(loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0201f390-266a-45ff-a769-a72abdfd5637", + "metadata": {}, + "source": [ + "#
VALIDAÇÃO E AVALIAÇÃO" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "e4981f6f-0c10-4f8f-a83e-af6780c5e4b8", + "metadata": {}, + "outputs": [], + "source": [ + "# CRIANDO MODELO DEFINITIVO COM OS MELHORES HYPER-PARÂMETROS ENCONTRADOS PELOS TESTES ACIMA\n", + "\n", + "random_forest = RandomForestClassifier(n_estimators=250, criterion='gini', max_features='log2', min_samples_leaf=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "08c288db-d002-49c6-a480-4a5fe0546484", + "metadata": {}, + "outputs": [], + "source": [ + "# REALIZANDO TREINAMENTO E AVALIAÇÃO POR VALIDAÇÃO CRUZADA\n", + "\n", + "scores = cross_val_score(random_forest, x_balanced, y_balanced, cv=10, scoring=\"accuracy\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "39348d91-9f51-42e1-8e22-530dd704ea41", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.870224" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# MÉDIA DA PONTUAÇÃO DO MODELO\n", + "scores.mean().round(6)" + ] + }, + { + "cell_type": "markdown", + "id": "1bae87ff-46b4-4af9-b2f2-b1ac966e9d82", + "metadata": {}, + "source": [ + "## Treinamento" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "72ad650b-de90-4471-aca5-6b6c6d6267b5", + "metadata": {}, + "outputs": [], + "source": [ + "modelo_random_forest = random_forest.fit(x_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "ca715b95-181f-4962-8e0b-797ccc9ed723", + "metadata": {}, + "source": [ + "## Previsões" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "a1aa2d24-9a00-4aa4-aa2f-ef78166e8ae4", + "metadata": {}, + "outputs": [], + "source": [ + "y_train_pred = modelo_random_forest.predict(x_train)" + ] + }, + { + "cell_type": "markdown", + "id": "3c14d252-c47f-4c7a-8e3c-987fb68296c9", + "metadata": { + "tags": [] + }, + "source": [ + "#
AVALIAÇÃO DADOS DE TREINO" + ] + }, + { + "cell_type": "markdown", + "id": "7951444c-513c-4769-ae6f-86d48cf2e722", + "metadata": {}, + "source": [ + "-> A matrix de confusão da previsão dos resultados com os dados de treino não aprensentou erros.
\n", + " Entretando é necessário a avaliação com dados de teste.
\n", + " Como dito inicialmente, estes dados são dados reais de uma competição do Kaggle e não foi disponibilizado as respostas para os dados de teste.\n", + " \n", + "-> Estava ancioso para postagem do meu primeiro projeto no Github por isso ainda não postei no Kaggle.\n", + " A competição já esta fechada mas farei minha publicação na competição. E atualizei este código. " + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "e4f5b53a-3a93-4c70-9b6c-c6fdb6dc028c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "matrix = plot_confusion_matrix(modelo_random_forest, x_train, y_train, cmap=plt.cm.Reds)\n", + "matrix.ax_.set_title('Confusion Matrix', color='black')\n", + "plt.xlabel('Predicted Classes', color='black')\n", + "plt.ylabel('True Classes', color='black')\n", + "plt.gcf().axes[0].tick_params(color='black')\n", + "plt.gcf().axes[1].tick_params(color='black')\n", + "plt.gcf().set_size_inches(10,8)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}