{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"colab":{"provenance":[]},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30804,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Child Mind Institute: Problematic Internet Use  \nRelacionando la actividad física con el uso problemático de Internet\n\n    Autores:\n- Victor Hugo Ramíres Ríos  \n- Lenika Elizabeth Montoya Valencia  \n- Gustavo Gutierrez Navarro  \n\nTodos estudiantes de la **Universidad de Sonora**  \n\n    Fecha:\n- 06 de diciembre de 2024","metadata":{"id":"nkB-GMlcaTyV"}},{"cell_type":"markdown","source":"---\n## 0. Introducción\n\nEn la era digital actual, la creciente prevalencia del uso problemático de internet entre niños y adolescentes plantea desafíos significativos para la salud mental y el bienestar. Condiciones como la depresión y la ansiedad suelen estar vinculadas al uso excesivo de la tecnología, lo que resalta la importancia de la detección e intervención tempranas.\n\nEsta libreta forma parte de una competencia diseñada para abordar este problema crítico mediante el desarrollo de un modelo predictivo que analiza los datos de actividad física de los niños. El objetivo es identificar indicadores tempranos del uso problemático de internet y tecnología, permitiendo intervenciones oportunas para fomentar hábitos digitales más saludables y mitigar riesgos para la salud mental.\n\nLos datos para esta competencia provienen del *Healthy Brain Network*, un innovador estudio de salud mental realizado en la ciudad de Nueva York. Esta iniciativa, liderada por el *Child Mind Institute*, colabora con familias, líderes comunitarios y patrocinadores para avanzar en nuestra comprensión del cerebro en desarrollo. El apoyo financiero para esta iniciativa ha sido proporcionado por el Departamento de Servicios de Atención Médica de California (*DHCS*) como parte de la *Children and Youth Behavioral Health Initiative (CYBHI)*, con contribuciones adicionales del equipo de Kaggle.\n\nPara más detalles, visita la [página de la competencia en Kaggle](https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/overview).","metadata":{"id":"T0BwLbTKaTyW"}},{"cell_type":"markdown","source":"---\n## 1. Librerias","metadata":{"id":"dLGJbbUwaTyW"}},{"cell_type":"code","source":"# Bibliotecas para manipulación y visualización de datos\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport plotly.express as px # pip install plotly.express\nimport missingno as msno    # pip install missingno\n\n# Modelos y herramientas de Sklearn\nfrom sklearn.svm import SVR\nfrom sklearn.manifold import TSNE\nfrom sklearn.model_selection import train_test_split, RandomizedSearchCV, GridSearchCV\nfrom sklearn.metrics import mean_squared_error, make_scorer, cohen_kappa_score\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.pipeline import Pipeline","metadata":{"id":"e4_mEjC9aTyW","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.417673Z","iopub.execute_input":"2024-12-04T08:51:17.418112Z","iopub.status.idle":"2024-12-04T08:51:17.424810Z","shell.execute_reply.started":"2024-12-04T08:51:17.418075Z","shell.execute_reply":"2024-12-04T08:51:17.423724Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 2. Importación del dataset\nEjecuta los bloques de código correspondiente según si estás trabajando con archivos locales o en Google Colab.","metadata":{"id":"w2Vcxt4aaTyY"}},{"cell_type":"markdown","source":"### 2.2 Archivos locales","metadata":{"id":"KmY5dPclaTyZ"}},{"cell_type":"code","source":"DATASETS_PATH = 'datasets/csv/'","metadata":{"id":"m03I_U7AaTyZ","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.426431Z","iopub.execute_input":"2024-12-04T08:51:17.426871Z","iopub.status.idle":"2024-12-04T08:51:17.453019Z","shell.execute_reply.started":"2024-12-04T08:51:17.426822Z","shell.execute_reply":"2024-12-04T08:51:17.451441Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 2.1 Google Colab","metadata":{"id":"kazzids9aTya"}},{"cell_type":"markdown","source":"---\nContinuar aquí","metadata":{"id":"51L9elrDaTya"}},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\ntest = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\ndata_dict = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/data_dictionary.csv')","metadata":{"id":"uUDWN63naTya","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.455297Z","iopub.execute_input":"2024-12-04T08:51:17.455778Z","iopub.status.idle":"2024-12-04T08:51:17.527064Z","shell.execute_reply.started":"2024-12-04T08:51:17.455730Z","shell.execute_reply":"2024-12-04T08:51:17.526051Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 3. Análisis Exploratorio de Datos (EDA)","metadata":{"id":"LzNY4PBKaTyb"}},{"cell_type":"code","source":"train.info()","metadata":{"id":"7L9hN7c_aTyb","outputId":"1767e8f8-632f-49d7-eb0d-6a5f6fbb70f1","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.528343Z","iopub.execute_input":"2024-12-04T08:51:17.528713Z","iopub.status.idle":"2024-12-04T08:51:17.549902Z","shell.execute_reply.started":"2024-12-04T08:51:17.528638Z","shell.execute_reply":"2024-12-04T08:51:17.548687Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test.info()","metadata":{"id":"1gru5lRbaTyc","outputId":"7442d53d-5b69-4ce2-9e21-064d71f188cf","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.552116Z","iopub.execute_input":"2024-12-04T08:51:17.552434Z","iopub.status.idle":"2024-12-04T08:51:17.565379Z","shell.execute_reply.started":"2024-12-04T08:51:17.552403Z","shell.execute_reply":"2024-12-04T08:51:17.564318Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 3.1 Datos faltantes","metadata":{"id":"FROIfdbpaTyc"}},{"cell_type":"code","source":"missing_percentages = train.isnull().sum() * 100 / len(train)\nmissing_percentages_sorted = missing_percentages.sort_values()\nmissing_percentages_sorted = missing_percentages_sorted[missing_percentages_sorted != 0]\n\nplt.figure(figsize=(12, 6))\nsns.barplot(x=missing_percentages_sorted.index, y=missing_percentages_sorted.values)\nplt.xticks(rotation=90)\nplt.xlabel(\"Características\")\nplt.ylabel(\"Porcentaje de valores nulos\")\nplt.title(\"Porcentaje de valores nulos en el dataset de entrenamiento\")\nplt.tight_layout()\nplt.show()","metadata":{"id":"kHTVvYhcaTyc","outputId":"5b406bd3-fedc-43b9-a2be-300cc3c43698","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:17.566762Z","iopub.execute_input":"2024-12-04T08:51:17.567063Z","iopub.status.idle":"2024-12-04T08:51:18.437298Z","shell.execute_reply.started":"2024-12-04T08:51:17.567033Z","shell.execute_reply":"2024-12-04T08:51:18.436246Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 3.2 Entrenamiento supervizado\nDado que aproximadamente el **30%** de los datos del **target** están faltantes, podemos optar por dos enfoques:\n\n1. **Eliminar los datos faltantes** y trabajar únicamente de forma **supervisada**.\n2. Adoptar un enfoque **semi-supervisado**, estimando los valores faltantes para hacer una predicción con todos los datos disponibles.\n\nComenzaremos creando el conjunto de datos **train_supervised**, el cual, a partir de ahora, será el que utilizaremos para entrenar nuestro modelo.\n\n","metadata":{"id":"6YkqxcquaTyc"}},{"cell_type":"code","source":"train_supervized = train[train['sii'].notnull()]","metadata":{"id":"jlueI3mbaTyd","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:18.438877Z","iopub.execute_input":"2024-12-04T08:51:18.439296Z","iopub.status.idle":"2024-12-04T08:51:18.447548Z","shell.execute_reply.started":"2024-12-04T08:51:18.439240Z","shell.execute_reply":"2024-12-04T08:51:18.446152Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"missing_percentages = train_supervized.isnull().sum() * 100 / len(train)\nmissing_percentages_sorted = missing_percentages.sort_values()\nmissing_percentages_sorted = missing_percentages_sorted[missing_percentages_sorted != 0]\n\nplt.figure(figsize=(12, 6))\nsns.barplot(x=missing_percentages_sorted.index, y=missing_percentages_sorted.values)\nplt.xticks(rotation=90)\nplt.xlabel(\"Características\")\nplt.ylabel(\"Porcentaje de valores nulos\")\nplt.title(\"Porcentaje de valores nulos en el dataset en el que tenemos todas las target features\")\nplt.tight_layout()\nplt.show()","metadata":{"id":"m40W2MOhaTyd","outputId":"fe1c45b0-d40c-4909-d3ff-457dbe65c169","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:18.449111Z","iopub.execute_input":"2024-12-04T08:51:18.449449Z","iopub.status.idle":"2024-12-04T08:51:19.316693Z","shell.execute_reply.started":"2024-12-04T08:51:18.449418Z","shell.execute_reply":"2024-12-04T08:51:19.315587Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print('Columnas que no estan en el test:')\nprint([f for f in train.columns if f not in test.columns])\ntrain_supervized = train_supervized.drop(['PCIAT-Season', 'PCIAT-PCIAT_01', 'PCIAT-PCIAT_02', 'PCIAT-PCIAT_03', 'PCIAT-PCIAT_04', 'PCIAT-PCIAT_05', 'PCIAT-PCIAT_06', 'PCIAT-PCIAT_07', 'PCIAT-PCIAT_08', 'PCIAT-PCIAT_09', 'PCIAT-PCIAT_10', 'PCIAT-PCIAT_11', 'PCIAT-PCIAT_12', 'PCIAT-PCIAT_13', 'PCIAT-PCIAT_14', 'PCIAT-PCIAT_15', 'PCIAT-PCIAT_16', 'PCIAT-PCIAT_17', 'PCIAT-PCIAT_18', 'PCIAT-PCIAT_19', 'PCIAT-PCIAT_20'], axis=1)\ntrain_supervized.info()","metadata":{"id":"W93PZgYraTyd","outputId":"f7217088-69c4-4545-d175-b250333d45f9","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:19.317994Z","iopub.execute_input":"2024-12-04T08:51:19.318299Z","iopub.status.idle":"2024-12-04T08:51:19.337008Z","shell.execute_reply.started":"2024-12-04T08:51:19.318263Z","shell.execute_reply":"2024-12-04T08:51:19.335942Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"msno.matrix(train_supervized, figsize=(24,8))","metadata":{"id":"r-8ddGOOaTyd","outputId":"40d30dcc-899f-40c2-87bb-521847639012","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:19.338447Z","iopub.execute_input":"2024-12-04T08:51:19.339425Z","iopub.status.idle":"2024-12-04T08:51:19.951727Z","shell.execute_reply.started":"2024-12-04T08:51:19.339390Z","shell.execute_reply":"2024-12-04T08:51:19.950492Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 4. Análisis de las variables\n\nEl conjunto de datos es amplio y complejo, por lo que se analiza separándolo en tres grupos:\n\n- **Fitness Gram Child** (Evaluación del estado físico infantil) y **Sleep Disturbance** (Trastornos del sueño): En este grupo se incluyen variables relacionadas con el estado físico general de los niños y posibles problemas de sueño. Se analiza la relación entre estas variables y su impacto en la salud y el bienestar de los niños.\n  \n- **Bio-electrical Impedance Analysis** (Análisis de impedancia bioeléctrica): Este grupo abarca mediciones relacionadas con la composición corporal de los individuos, como la cantidad de masa grasa y masa muscular, a través de la impedancia bioeléctrica, que es una técnica utilizada para evaluar la salud física.\n\n- **Demographics** (Demografía), **Children's Global Assessment Scale** (Escala de evaluación global de los niños), **Physical** (Físico), **PAQ Adolescents and Children** (Cuestionario de actividad física para adolescentes y niños): Este grupo contiene variables demográficas y de evaluación de la salud mental y física, como la escala global de evaluación del niño y las mediciones de actividad física en diferentes etapas de la niñez y adolescencia.\n","metadata":{"id":"L0SONP85aTye"}},{"cell_type":"markdown","source":"### 4.1 Evaluación del estado físico infantil y Trastornos del sueño","metadata":{"id":"Ck15IufsaTye"}},{"cell_type":"code","source":"# Columnas correspondientes\n\n# Estado Físico Infantil\nFGC = [\"FGC-Season\",\n    \"FGC-FGC_CU\",\n    \"FGC-FGC_CU_Zone\",\n    \"FGC-FGC_GSND\",\n    \"FGC-FGC_GSND_Zone\",\n    \"FGC-FGC_GSD\",\n    \"FGC-FGC_GSD_Zone\",\n    \"FGC-FGC_PU\",\n    \"FGC-FGC_PU_Zone\",\n    \"FGC-FGC_SRL\",\n    \"FGC-FGC_SRL_Zone\",\n    \"FGC-FGC_SRR\",\n    \"FGC-FGC_SRR_Zone\",\n    \"FGC-FGC_TL\",\n    \"FGC-FGC_TL_Zone\"]\n\n# Trastornos del sueño\nSDS = [\"SDS-Season\",\n    \"SDS-SDS_Total_Raw\",\n    \"SDS-SDS_Total_T\"]","metadata":{"id":"rfC8JT0PaTye","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:19.956388Z","iopub.execute_input":"2024-12-04T08:51:19.956849Z","iopub.status.idle":"2024-12-04T08:51:19.963972Z","shell.execute_reply.started":"2024-12-04T08:51:19.956807Z","shell.execute_reply":"2024-12-04T08:51:19.962733Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"msno.matrix(train_supervized[FGC], figsize=(24,8))","metadata":{"id":"30TD1yUqaTye","outputId":"e0e4c129-aa5e-477f-cd86-c1293d55dee8","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:19.965556Z","iopub.execute_input":"2024-12-04T08:51:19.966042Z","iopub.status.idle":"2024-12-04T08:51:20.806973Z","shell.execute_reply.started":"2024-12-04T08:51:19.965996Z","shell.execute_reply":"2024-12-04T08:51:20.805734Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Estado Físico Infantil (Descripción y Analísis)\n\nEl **FITNESSGRAM®** utiliza estándares referenciados a criterios para evaluar el rendimiento físico. Estos estándares, establecidos por **The Cooper Institute** de Dallas, Texas, representan niveles de condición física que ofrecen protección contra las enfermedades derivadas de un estilo de vida sedentario.\n\n  Características y consideraciones\n\n- En la mayoría de los casos, si no se realiza alguna medición debido a una causa directa, la métrica de **fitness zone** (zona de condición física) también será marcada como valor nulo.\n  \n- El **Healthy Fitness Zone** (Zona de Fitness Saludable) se marca, en casi todas las características, como:\n  - **0**: Necesita mejorar.\n  - **1**: Está dentro de la zona saludable.\n  \n  La única excepción a esta regla es la **fuerza de agarre**, donde se utiliza una escala ordinal del **1 al 3** (débil, normal y fuerte, respectivamente).\n\n- A diferencia de **FGC-Season**, todas las demás características del **FGC** tienen correlación con la pérdida de datos. Las métricas **FGC-FGC_GSND** y **FGC-FGC_GSD** tienen aún más valores perdidos, los cuales se utilizan para determinar la fuerza de agarre.\n\n- En el conjunto de datos, casi todos los valores están marcados como **flotantes**, aunque conceptualmente deberían ser enteros.","metadata":{"id":"WgZALngCaTyf"}},{"cell_type":"code","source":"FGC_measures = [\"FGC-FGC_CU\",\n    \"FGC-FGC_GSND\",\n    \"FGC-FGC_GSD\",\n    \"FGC-FGC_PU\",\n    \"FGC-FGC_SRL\",\n    \"FGC-FGC_SRR\",\n    \"FGC-FGC_TL\"]\n\nFGC_measures_zone = [\n    \"FGC-FGC_CU_Zone\",\n    \"FGC-FGC_GSND_Zone\",\n    \"FGC-FGC_GSD_Zone\",\n    \"FGC-FGC_PU_Zone\",\n    \"FGC-FGC_SRL_Zone\",\n    \"FGC-FGC_SRR_Zone\",\n    \"FGC-FGC_TL_Zone\"\n]","metadata":{"id":"eErq9AWeaTyf","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:20.808466Z","iopub.execute_input":"2024-12-04T08:51:20.808826Z","iopub.status.idle":"2024-12-04T08:51:20.814036Z","shell.execute_reply.started":"2024-12-04T08:51:20.808793Z","shell.execute_reply":"2024-12-04T08:51:20.812735Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Estado Físico Infantil (Distribuciones)","metadata":{"id":"EMoq6TkpaTyf"}},{"cell_type":"code","source":"for measure, zone in zip(FGC_measures, FGC_measures_zone):\n  sns.histplot(\n    data=train_supervized,\n    x=measure,\n    hue=zone,\n    bins=20,\n    palette='Set2',\n    kde=True\n    )\n  plt.title(f'{measure}')\n  plt.xlabel(measure)\n  plt.ylabel('Cantidad')\n\n  plt.show()","metadata":{"id":"KdGdSUWcaTyf","outputId":"a0dc657e-2bc6-48d8-90bd-01e391a14243","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:20.815724Z","iopub.execute_input":"2024-12-04T08:51:20.816258Z","iopub.status.idle":"2024-12-04T08:51:23.966070Z","shell.execute_reply.started":"2024-12-04T08:51:20.816207Z","shell.execute_reply":"2024-12-04T08:51:23.964922Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Se puede observar que hay categorías que se empalman. Esto, en teoría, tiene sentido, ya que, además del desempeño en las pruebas, el **sexo** y la **edad** también influyen en el resultado.\n\nPodemos realizar un análisis más detallado observando los rangos de **edad** y **género** para comprender mejor cómo estas variables afectan el rendimiento y las categorías en las que se agrupan los datos.\n","metadata":{"id":"SJCaYvFyaTyg"}},{"cell_type":"code","source":"# Codigo obtenido de la libreta: https://www.kaggle.com/code/antoninadolgorukova/cmi-piu-features-eda\n \n#Filtrar para obtener soloo los datos de \"FitnessGram Child\"\nfgc_data_dict = data_dict[data_dict['Instrument'] == 'FitnessGram Child']\n\n# Lista para almacenar pares de medidas y zonas con sus descripciones\nfgc_columns = []\nfor index, row in fgc_data_dict.iterrows():\n    # Excluir campos que incluyen '_Zone'\n    if '_Zone' not in row['Field']:\n        measure_field = row['Field']\n        measure_desc = row['Description']\n\n        #Buscar columnas que corrresponden a la zona\n        zone_field = measure_field + '_Zone'\n        zone_row = fgc_data_dict[fgc_data_dict['Field'] == zone_field]\n\n        if not zone_row.empty:\n            zone_desc = zone_row['Description'].values[0]\n            fgc_columns.append((measure_field, zone_field, measure_desc, zone_desc))","metadata":{"id":"CAx3tV_JaTyg","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:23.967572Z","iopub.execute_input":"2024-12-04T08:51:23.967946Z","iopub.status.idle":"2024-12-04T08:51:23.980241Z","shell.execute_reply.started":"2024-12-04T08:51:23.967914Z","shell.execute_reply":"2024-12-04T08:51:23.978909Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Codigo obtenido de la libreta: https://www.kaggle.com/code/antoninadolgorukova/cmi-piu-features-eda\n\n#Analisis por zzona, edad y sexo\nresults_male = []\n\nfor measure, zone, _, _ in fgc_columns:\n    #Valores únicos en la zona ordenados\n    sorted_zones = sorted(train_supervized[zone].dropna().unique())\n    for zone_value in sorted_zones:\n        # Filtrar datos por zona actual\n        age_sex_data_by_zone = train_supervized[train_supervized[zone] == zone_value][\n            ['Basic_Demos-Age', 'Basic_Demos-Sex', measure]\n        ]\n        # Edades únicas en los datos filtrados\n        unique_ages = age_sex_data_by_zone['Basic_Demos-Age'].dropna().unique()\n\n        for age in sorted(unique_ages):\n            # Filtrar por edad y sexo masculino\n            age_sex_data = age_sex_data_by_zone[\n                (age_sex_data_by_zone['Basic_Demos-Age'] == age) &\n                (age_sex_data_by_zone['Basic_Demos-Sex'] == 0)\n            ][measure]\n\n            if not age_sex_data.empty:\n                # Calcular mínimo y máximo para la medida actual\n                min_val, max_val = age_sex_data.min(), age_sex_data.max()\n                results_male.append({\n                    'Age': age,\n                    'Sex': 'Male',\n                    'Zone': zone_value,\n                    'Measure': measure,\n                    'Min-Max': f'{min_val} - {max_val}'\n                })\n\n#Convertir los resultados a un DataFrame\n# Crear tabla pivote para organizar los datos por edad, sexo y zona\ndf_male = pd.DataFrame(results_male).pivot_table(\n    index=['Age', 'Sex', 'Zone'],\n    columns='Measure',\n    values='Min-Max',\n    aggfunc='first'\n)\nprint(\"Resultados por edad, sexo masculino y zona:\")\ndf_male","metadata":{"id":"eh-xfoEDaTyg","outputId":"dfb603e2-a3f2-46c2-9ae7-7e4b7b3b1322","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:23.981504Z","iopub.execute_input":"2024-12-04T08:51:23.981887Z","iopub.status.idle":"2024-12-04T08:51:24.211718Z","shell.execute_reply.started":"2024-12-04T08:51:23.981856Z","shell.execute_reply":"2024-12-04T08:51:24.210705Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Como se puede observar, generalmente la zona se empalma sin importar las consideraciones establecidas. Esto sugiere que puede ser una mejor idea **eliminar estas columnas** para reducir el ruido al entrenar el modelo.\n\nAlternativamente, se podría utilizar alguna métrica preestablecida para **asignar estos valores** de manera más precisa y coherente, de forma que no afecten negativamente el desempeño del modelo.","metadata":{"id":"-gIVXj6aaTyg"}},{"cell_type":"code","source":"msno.matrix(train_supervized[SDS], figsize=(24,8))","metadata":{"id":"T-Apt_TsaTyg","outputId":"5f1794e9-b750-4105-97ee-ea09fadb1adf","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:24.213008Z","iopub.execute_input":"2024-12-04T08:51:24.213314Z","iopub.status.idle":"2024-12-04T08:51:24.801991Z","shell.execute_reply.started":"2024-12-04T08:51:24.213285Z","shell.execute_reply":"2024-12-04T08:51:24.800914Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Trastornos del Sueño (Descripción y Análisis)\n\nLos **trastornos del sueño** son condiciones que afectan la calidad y cantidad del sueño, lo cual puede influir en la salud física y mental. En nuestro conjunto de datos, los trastornos del sueño están representados por varias métricas que indican la calidad del descanso de los individuos.\n\nDado que hay pocos valores perdidos y para evitar reducir el tamaño de nuestros datos, es posible realizar una **imputación por medio de la mediana**. Esto nos permitirá llenar los valores faltantes sin afectar significativamente la integridad del conjunto de datos.\n","metadata":{"id":"AN_EwD8maTyg"}},{"cell_type":"code","source":"plt.subplot(1, 3, 2)\nsns.histplot(train_supervized['SDS-SDS_Total_Raw'].dropna(), bins=20, kde=True)\nplt.title('SDS-SDS_Total_Raw')\nplt.xlabel('Valor bruto')\n\nplt.subplot(1, 3, 3)\nsns.histplot(train_supervized['SDS-SDS_Total_T'].dropna(), bins=20, kde=True)\nplt.title('SDS-SDS_Total_T')\nplt.xlabel('Vaor despues de T-Score')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"hKAnPzX_aTyg","outputId":"0a41d058-a747-4909-9e9b-b1a2ace12d00","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:24.803143Z","iopub.execute_input":"2024-12-04T08:51:24.803436Z","iopub.status.idle":"2024-12-04T08:51:25.407637Z","shell.execute_reply.started":"2024-12-04T08:51:24.803406Z","shell.execute_reply":"2024-12-04T08:51:25.406470Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Para este proyecto, utilizaremos la **Total_T**, ya que esta se encuentra **estandarizada**. Además, podemos aprovechar el hecho de que está estandarizada con una **media de 50** y una **desviación estándar de 10**, lo que nos permitirá asignar un valor de **50** a los valores nulos. De esta manera, mantenemos la coherencia en los datos y minimizamos el impacto de los valores faltantes.\n","metadata":{"id":"zuL6sSLuaTyh"}},{"cell_type":"markdown","source":"### 4.2 Análisis de impedancia bioeléctrica","metadata":{"id":"HCK4g1ajaTyh"}},{"cell_type":"code","source":"# Columnas correspondientes\n\nBIA_mesures = [\"BIA-Season\", \"BIA-BIA_Activity_Level_num\",\n    \"BIA-BIA_BMC\",\n    \"BIA-BIA_BMI\",\n    \"BIA-BIA_BMR\",\n    \"BIA-BIA_DEE\",\n    \"BIA-BIA_ECW\",\n    \"BIA-BIA_FFM\",\n    \"BIA-BIA_FFMI\",\n    \"BIA-BIA_FMI\",\n    \"BIA-BIA_Fat\",\n    \"BIA-BIA_Frame_num\",\n    \"BIA-BIA_ICW\",\n    \"BIA-BIA_LDM\",\n    \"BIA-BIA_LST\",\n    \"BIA-BIA_SMM\",\n    \"BIA-BIA_TBW\"]","metadata":{"id":"DSll-OF0aTyh","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:25.409065Z","iopub.execute_input":"2024-12-04T08:51:25.409398Z","iopub.status.idle":"2024-12-04T08:51:25.415214Z","shell.execute_reply.started":"2024-12-04T08:51:25.409365Z","shell.execute_reply":"2024-12-04T08:51:25.414052Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"msno.matrix(train_supervized[BIA_mesures], figsize=(24,8))","metadata":{"id":"OGUXB30FaTyh","outputId":"082b772d-80b6-4e25-9775-c9c4ce5220e7","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:25.416613Z","iopub.execute_input":"2024-12-04T08:51:25.417012Z","iopub.status.idle":"2024-12-04T08:51:26.259660Z","shell.execute_reply.started":"2024-12-04T08:51:25.416981Z","shell.execute_reply":"2024-12-04T08:51:26.258604Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for measure in BIA_mesures:\n    sns.histplot(data=train_supervized, x=measure, bins=20, kde=True)\n    plt.title(f'{measure}')\n    plt.xlabel(measure)\n    plt.ylabel('Total')\n    plt.show()","metadata":{"id":"3obVIFZnaTyh","outputId":"68d55215-0250-4b59-a3f0-e79248b77020","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:26.260996Z","iopub.execute_input":"2024-12-04T08:51:26.261361Z","iopub.status.idle":"2024-12-04T08:51:31.316866Z","shell.execute_reply.started":"2024-12-04T08:51:26.261330Z","shell.execute_reply":"2024-12-04T08:51:31.315866Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Existen muchos **valores faltantes** y **valores repetidos** en el conjunto de datos, especialmente en variables como el **nivel de actividad** y el **BMI**. Además, las distribuciones muestran que muchos de estos datos no son útiles para el modelo, por lo que podemos optar por **no usarlos**.\n\nSin embargo, hay algunas columnas que podrían ser útiles para el entrenamiento, como las relacionadas con el **Frame** (estructura física) y el **nivel de actividad**.\n\nUna posible mejora sería combinar el **nivel de actividad** con los resultados del **cuestionario** para obtener un **promedio** y crear una nueva característica que integre ambos datos. Esto podría ofrecer una representación más completa y precisa del nivel de actividad, mejorando la calidad de las predicciones del modelo.\n","metadata":{"id":"ZfZJTnzIaTyi"}},{"cell_type":"markdown","source":"### 4.3 Demografía, Escala de evaluación global de los niños, Físico, Cuestionario de actividad física para adolescentes y niños","metadata":{"id":"JCEIZGqnaTyi"}},{"cell_type":"code","source":"#Columnas demográficas básicas\ndemogr_measures = [\"Basic_Demos-Enroll_Season\",\n                   \"Basic_Demos-Age\",\n                   \"Basic_Demos-Sex\",]\n\n#Medidas físicas generales\nphysical_measures = [\"Physical-BMI\",\n                     \"Physical-Height\",\n                     \"Physical-Weight\",\n                     \"Physical-Waist_Circumference\",\n                     \"Physical-Diastolic_BP\",\n                     \"Physical-HeartRate\",\n                     \"Physical-Systolic_BP\"]\n\n#Medidas de condición física relacionadas con resistencia\nfitness_measures = [\"Fitness_Endurance-Season\",\n                \"Fitness_Endurance-Max_Stage\",\n                \"Fitness_Endurance-Time_Mins\",\n                \"Fitness_Endurance-Time_Sec\"]\n\n# La información que se nos da del dataset de las columnas PAQ_A y PAQ_C es que\n# cuestionarios subjetivos que tienen un resultado del 0 al 5, el A y el C son\n# solo para dividir entre A = Adolescentes y C = Niños\nPAQ_A = [\"PAQ_A-Season\",\n         \"PAQ_A-PAQ_A_Total\",]\n\nPAQ_C = [\"PAQ_C-Season\",\n         \"PAQ_C-PAQ_C_Total\"]\n\n# Medidas físicas de la presión arterial y frecuencia cardíaca\nbp_hr_cols = [\n    'Physical-Diastolic_BP',\n    'Physical-Systolic_BP',\n    'Physical-HeartRate'\n]","metadata":{"id":"zR6bb1j9aTyi","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:31.318537Z","iopub.execute_input":"2024-12-04T08:51:31.318986Z","iopub.status.idle":"2024-12-04T08:51:31.326009Z","shell.execute_reply.started":"2024-12-04T08:51:31.318940Z","shell.execute_reply":"2024-12-04T08:51:31.324910Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Definición de la características (CGAS):\n\nLa **Children’s Global Assessment Scale** (CGAS), adaptada de la **Global Assessment Scale** para adultos, es una evaluación del funcionamiento general de niños y jóvenes de 4 a 16 años. El clínico evalúa una serie de aspectos del funcionamiento psicológico y social, y otorga un puntaje único entre 1 y 100, basado en el nivel más bajo de funcionamiento del niño o joven.\n\nEl puntaje los clasifica en una de diez categorías, que van desde **\"necesita supervisión constante\"** (1-10) hasta **\"funcionamiento superior\"** (91-100). Esta medida puede ser utilizada tanto por clínicos como por investigadores para complementar otras escalas que miden síntomas más específicos.\n","metadata":{"id":"wbpTxZ20aTyi"}},{"cell_type":"code","source":"CGAS = [\"CGAS-Season\",\n        \"CGAS-CGAS_Score\"]","metadata":{"id":"pV2Gti4WaTyi","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:31.327141Z","iopub.execute_input":"2024-12-04T08:51:31.327543Z","iopub.status.idle":"2024-12-04T08:51:31.345712Z","shell.execute_reply.started":"2024-12-04T08:51:31.327488Z","shell.execute_reply":"2024-12-04T08:51:31.344615Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Demogarfía","metadata":{"id":"liePUyIWaTyj"}},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized['Basic_Demos-Age'].dropna(), bins=20, kde=True)\nplt.title('Basic_Demos-Age')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"DKun45R0aTyj","outputId":"29d35d0e-cee9-4405-ec08-594b49aaff6f","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:31.347082Z","iopub.execute_input":"2024-12-04T08:51:31.347389Z","iopub.status.idle":"2024-12-04T08:51:31.796419Z","shell.execute_reply.started":"2024-12-04T08:51:31.347342Z","shell.execute_reply":"2024-12-04T08:51:31.795392Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Los **datos demográficos** son de los más importantes, ya que muchos otros datos están directamente relacionados con estos.\n\nSe puede observar, de manera esperada, que la gráfica de **edad** tiene una **cola larga**, debido a que los datos están más centrados en niños.\n","metadata":{"id":"s2LJNafKaTyj"}},{"cell_type":"markdown","source":"#### Escala de evaluación global de los niños","metadata":{"id":"QsmM8kfdaTyj"}},{"cell_type":"code","source":"# Porcentaje de valores faltantes\ntrain_supervized[CGAS].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"Vk3hbO4vaTyk","outputId":"b1de3569-a078-4533-8947-8e24c972abb3","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:31.797892Z","iopub.execute_input":"2024-12-04T08:51:31.798208Z","iopub.status.idle":"2024-12-04T08:51:31.809264Z","shell.execute_reply.started":"2024-12-04T08:51:31.798178Z","shell.execute_reply":"2024-12-04T08:51:31.808118Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Visualización de los valores faltantes\nmsno.matrix(train_supervized[CGAS], figsize=(24,8))","metadata":{"id":"peiZu-QYaTyk","outputId":"93d63821-63d3-4108-f6d8-bdd361bdec08","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:31.810441Z","iopub.execute_input":"2024-12-04T08:51:31.810840Z","iopub.status.idle":"2024-12-04T08:51:32.287248Z","shell.execute_reply.started":"2024-12-04T08:51:31.810809Z","shell.execute_reply":"2024-12-04T08:51:32.286129Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"El **14%** de los datos están faltantes. Los datos están **estandarizados** en un rango del **1 al 100**.\n\nExisten dos opciones para manejar los valores faltantes:\n1. **Eliminar estos renglones**, descartando los datos incompletos.\n2. Realizar una **imputación**, ya sea utilizando la **media** de los valores o asignando algún valor dentro del **rango establecido** (1-100).\n","metadata":{"id":"jmvSvqKzaTyk"}},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized['CGAS-CGAS_Score'].dropna(), bins=20, kde=True)\nplt.title('CGAS-CGAS_Score')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\nplt.tight_layout()\nplt.show()","metadata":{"id":"oGvUEwzyaTyk","outputId":"dfcf569d-d4f8-4aa7-cf99-ac049be61b67","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:32.288480Z","iopub.execute_input":"2024-12-04T08:51:32.288821Z","iopub.status.idle":"2024-12-04T08:51:32.596469Z","shell.execute_reply.started":"2024-12-04T08:51:32.288789Z","shell.execute_reply":"2024-12-04T08:51:32.595240Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Físico","metadata":{"id":"b4lbpXbKaTyk"}},{"cell_type":"code","source":"# Porcentaje de valores faltantes\ntrain_supervized[physical_measures].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"AlbOrcHMaTyk","outputId":"29c4ef76-1231-4fb9-9942-9d7a761a4b7d","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:32.597868Z","iopub.execute_input":"2024-12-04T08:51:32.598172Z","iopub.status.idle":"2024-12-04T08:51:32.607516Z","shell.execute_reply.started":"2024-12-04T08:51:32.598143Z","shell.execute_reply":"2024-12-04T08:51:32.606517Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Visualización de valores faltantes\nmsno.matrix(train_supervized[physical_measures], figsize=(24,8))","metadata":{"id":"cHclYZCPaTyk","outputId":"22d5e041-6e22-4b97-d23f-b6cc84302d93","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:32.614592Z","iopub.execute_input":"2024-12-04T08:51:32.614974Z","iopub.status.idle":"2024-12-04T08:51:33.296122Z","shell.execute_reply.started":"2024-12-04T08:51:32.614945Z","shell.execute_reply":"2024-12-04T08:51:33.295040Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Conteo de valores cero\n(train_supervized[physical_measures] == 0).sum()","metadata":{"id":"V93dIs0jaTyl","outputId":"5fb24bff-8107-4bd6-d43c-93ccf8df60cd","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:33.297686Z","iopub.execute_input":"2024-12-04T08:51:33.298084Z","iopub.status.idle":"2024-12-04T08:51:33.308058Z","shell.execute_reply.started":"2024-12-04T08:51:33.298044Z","shell.execute_reply":"2024-12-04T08:51:33.306805Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Medidas físicas\nfor measure in physical_measures:\n    sns.histplot(data=train_supervized, x=measure, bins=20, kde=True)\n    plt.title(f'{measure}')\n    plt.xlabel(measure)\n    plt.ylabel('Cantidad')\n    plt.show()","metadata":{"id":"v8KKSaFaaTyl","outputId":"7b149bde-8800-4522-9f13-7ca40233232f","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:33.309534Z","iopub.execute_input":"2024-12-04T08:51:33.309893Z","iopub.status.idle":"2024-12-04T08:51:35.738597Z","shell.execute_reply.started":"2024-12-04T08:51:33.309861Z","shell.execute_reply":"2024-12-04T08:51:35.737529Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### Cuestionario de actividad física para adolescentes y niños\nChecamos si hay valores letales o incongruentes en el dataset","metadata":{"id":"RKBPxVeJaTyl"}},{"cell_type":"code","source":"# Verifica que existen valores en las columnas de presión arterial que sean menores a 50\n(train_supervized[bp_hr_cols] < 50).sum()","metadata":{"id":"7MUzbsAuaTyl","outputId":"680588a7-7263-4d58-c283-a8652ea2a11d","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:35.740234Z","iopub.execute_input":"2024-12-04T08:51:35.740702Z","iopub.status.idle":"2024-12-04T08:51:35.750974Z","shell.execute_reply.started":"2024-12-04T08:51:35.740635Z","shell.execute_reply":"2024-12-04T08:51:35.749554Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Identidicación de Valores de Presión Arterial Incongruentes\ntrain_supervized[train_supervized['Physical-Systolic_BP'] <= train_supervized['Physical-Diastolic_BP']][bp_hr_cols]","metadata":{"id":"gII-CPOKaTyl","outputId":"f7c51c56-1ef8-42ff-d0c3-19fa9efa1df9","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:35.752571Z","iopub.execute_input":"2024-12-04T08:51:35.752927Z","iopub.status.idle":"2024-12-04T08:51:35.775046Z","shell.execute_reply.started":"2024-12-04T08:51:35.752895Z","shell.execute_reply":"2024-12-04T08:51:35.773767Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Según las pautas actuales, la **presión arterial normal** se define como:\n- Un valor **sistólico** inferior a **120 milímetros de mercurio (mm Hg)**.\n- Un valor **diastólico** inferior a **80 mm Hg**.\n\nHay valores no realistas para el BMI y el peso.","metadata":{"id":"-_hv9NuCaTym"}},{"cell_type":"code","source":"# Verificación de Datos Faltantes en las Medidas de Actividad Física\ntrain_supervized[fitness_measures].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"rgnM1WBzaTym","outputId":"7c49ffd1-7543-4511-f818-37e502607aca","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:35.776495Z","iopub.execute_input":"2024-12-04T08:51:35.777444Z","iopub.status.idle":"2024-12-04T08:51:35.790970Z","shell.execute_reply.started":"2024-12-04T08:51:35.777385Z","shell.execute_reply":"2024-12-04T08:51:35.789894Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Visualización de los valores faltantes en las medidas de Actividad Física\nmsno.matrix(train_supervized[fitness_measures], figsize=(24,8))","metadata":{"id":"ieL0l54naTym","outputId":"0c7433ed-5fb3-43e6-8043-7c296293e0bb","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:35.792380Z","iopub.execute_input":"2024-12-04T08:51:35.792722Z","iopub.status.idle":"2024-12-04T08:51:36.464127Z","shell.execute_reply.started":"2024-12-04T08:51:35.792682Z","shell.execute_reply":"2024-12-04T08:51:36.463046Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Dado que más del **80%** de los datos faltan en las características de actividad física, se ha decidido **no utilizar** estas columnas en el análisis posterior. Esto se debe a que la cantidad de datos faltantes es excesiva y podría introducir ruido o sesgo en el modelo.","metadata":{"id":"pH6difeZaTym"}},{"cell_type":"markdown","source":"### PAQ_A","metadata":{"id":"dD1TE8_7aTym"}},{"cell_type":"markdown","source":"La información que se nos da del dataset de las columnas PAQ_A y PAQ_C es que cuestionarios subjetivos que tienen un resultado del 0 al 5. El A y el C son solo para dividir entre A = Adolescentes y C = Niños","metadata":{"id":"SVu_PI-OdQhP"}},{"cell_type":"code","source":"# Porcentaje de valores faltantes\ntrain_supervized[PAQ_A].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"sym7Oh1VaTym","outputId":"1f7efc4f-a058-48e5-9207-338b499b2203","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:36.465733Z","iopub.execute_input":"2024-12-04T08:51:36.466196Z","iopub.status.idle":"2024-12-04T08:51:36.477244Z","shell.execute_reply.started":"2024-12-04T08:51:36.466150Z","shell.execute_reply":"2024-12-04T08:51:36.475999Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Matriz de valores faltantes\nmsno.matrix(train_supervized[PAQ_A], figsize=(24,8))","metadata":{"id":"TGentDaOaTym","outputId":"d7946dca-8041-4337-c6c6-3d2e66a9f9be","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:36.478705Z","iopub.execute_input":"2024-12-04T08:51:36.479329Z","iopub.status.idle":"2024-12-04T08:51:37.060464Z","shell.execute_reply.started":"2024-12-04T08:51:36.479295Z","shell.execute_reply":"2024-12-04T08:51:37.059204Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized[\"PAQ_A-PAQ_A_Total\"].dropna(), bins=20, kde=True)\nplt.title('\"PAQ_A-PAQ_A_Total\"')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"W3gs6PX3aTym","outputId":"1e58c557-2d31-4597-b73f-2082d43672e2","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:37.061948Z","iopub.execute_input":"2024-12-04T08:51:37.062358Z","iopub.status.idle":"2024-12-04T08:51:37.481295Z","shell.execute_reply.started":"2024-12-04T08:51:37.062323Z","shell.execute_reply":"2024-12-04T08:51:37.480225Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Porcentaje de valores faltantes\ntrain_supervized[PAQ_C].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"uHtk_jWGaTyn","outputId":"e50a907b-bd64-4267-998c-711d0281377d","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:37.482802Z","iopub.execute_input":"2024-12-04T08:51:37.483221Z","iopub.status.idle":"2024-12-04T08:51:37.493820Z","shell.execute_reply.started":"2024-12-04T08:51:37.483175Z","shell.execute_reply":"2024-12-04T08:51:37.492725Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Matriz de valores faltantes\nmsno.matrix(train_supervized[PAQ_C], figsize=(24,8))","metadata":{"id":"hxZAa6BuaTyn","outputId":"34a89637-7d5a-49c4-a308-3ccca844088c","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:37.495476Z","iopub.execute_input":"2024-12-04T08:51:37.495930Z","iopub.status.idle":"2024-12-04T08:51:38.098876Z","shell.execute_reply.started":"2024-12-04T08:51:37.495883Z","shell.execute_reply":"2024-12-04T08:51:38.097733Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized[\"PAQ_C-PAQ_C_Total\"].dropna(), bins=20, kde=True)\nplt.title('\"PAQ_C-PAQ_C_Total\"')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"3wMyzO5xaTyn","outputId":"133fee9a-6aac-4dfd-ddee-8b8064c4ad6a","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.100358Z","iopub.execute_input":"2024-12-04T08:51:38.100803Z","iopub.status.idle":"2024-12-04T08:51:38.477081Z","shell.execute_reply.started":"2024-12-04T08:51:38.100757Z","shell.execute_reply":"2024-12-04T08:51:38.475992Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Estas características tienen muchos valores faltantes, ya que están divididas en **niños** y **adolescentes**.\n\nEs posible crear una nueva **característica** que englobe a ambos grupos, lo que podría ayudar a reducir los valores faltantes y simplificar el análisis.\n","metadata":{"id":"_wZQGSgOaTyn"}},{"cell_type":"code","source":"train_supervized.loc[:, \"PAQ_E-PAQ_E_Total\"] = train_supervized[\"PAQ_A-PAQ_A_Total\"].fillna(\n    train_supervized[\"PAQ_C-PAQ_C_Total\"]\n)\n\ntrain_supervized.loc[:, \"PAQ_E-Season\"] = train_supervized[\"PAQ_A-Season\"].fillna(\n    train_supervized[\"PAQ_C-Season\"]\n)\n\ntrain_supervized[\"PAQ_E-PAQ_E_Total\"].isna().sum() * 100 / len(train_supervized)\n\ntrain_supervized[\"PAQ_E-Season\"].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"Fvp9bh9qaTyo","outputId":"44249980-2f9c-44d2-ff48-3471aaec99d8","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.478738Z","iopub.execute_input":"2024-12-04T08:51:38.479548Z","iopub.status.idle":"2024-12-04T08:51:38.491479Z","shell.execute_reply.started":"2024-12-04T08:51:38.479499Z","shell.execute_reply":"2024-12-04T08:51:38.490361Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Aún combinando ambas columnas, siguen existiendo bastantes **valores faltantes**. En este caso, podemos decidir si:\n- **Utilizar esta columna con imputación** para el entrenamiento del modelo.\n- **Eliminar la columna** por completo si los valores faltantes son demasiado numerosos para que su inclusión sea útil.\n","metadata":{"id":"KQ0aYFcmaTyo"}},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized[\"PAQ_E-PAQ_E_Total\"].dropna(), bins=20, kde=True)\nplt.title('PAQ_E-PAQ_E_Total')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"NWKbxhH5aTyp","outputId":"88384461-79f3-4ae4-c5f9-1c7523440c7c","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.493080Z","iopub.execute_input":"2024-12-04T08:51:38.493488Z","iopub.status.idle":"2024-12-04T08:51:38.865066Z","shell.execute_reply.started":"2024-12-04T08:51:38.493457Z","shell.execute_reply":"2024-12-04T08:51:38.863793Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Número de horas de uso de computadora al día, donde 0 < 1 hora al dia, 1 es\n# aproximadamente una hora al día, 2 es aproximadamente 2 horas al día y 3\n# son más de tres horas al día\nPreInt = ['PreInt_EduHx-Season', 'PreInt_EduHx-computerinternet_hoursday']","metadata":{"id":"2Guf9_ZhaTyp","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.866449Z","iopub.execute_input":"2024-12-04T08:51:38.866807Z","iopub.status.idle":"2024-12-04T08:51:38.871628Z","shell.execute_reply.started":"2024-12-04T08:51:38.866776Z","shell.execute_reply":"2024-12-04T08:51:38.870477Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_supervized[PreInt].isna().sum() * 100 / len(train_supervized)","metadata":{"id":"HHd2kVupaTyp","outputId":"1add30a0-e6cf-4b63-83b6-6305633efbcb","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.872971Z","iopub.execute_input":"2024-12-04T08:51:38.873982Z","iopub.status.idle":"2024-12-04T08:51:38.892117Z","shell.execute_reply.started":"2024-12-04T08:51:38.873949Z","shell.execute_reply":"2024-12-04T08:51:38.891065Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Como hay valores faltantes en la columna de número de horas al día que si tienen una temporada marcada, se va a asumir que estos valores faltantes con menos de una hora, y los demás datos se eliminaran del dataset.","metadata":{"id":"GcLM2QD7fR4E"}},{"cell_type":"code","source":"train_supervized.loc[:, 'PreInt_EduHx-computerinternet_hoursday'] = train_supervized.loc[:, 'PreInt_EduHx-computerinternet_hoursday'].fillna(0)\ntrain_supervized = train_supervized.dropna(subset=['PreInt_EduHx-Season'])","metadata":{"id":"IS5ZsSrcaTyp","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.893461Z","iopub.execute_input":"2024-12-04T08:51:38.893921Z","iopub.status.idle":"2024-12-04T08:51:38.907715Z","shell.execute_reply.started":"2024-12-04T08:51:38.893878Z","shell.execute_reply":"2024-12-04T08:51:38.906662Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.subplot(1, 1, 1)\nsns.histplot(train_supervized[\"PreInt_EduHx-computerinternet_hoursday\"].dropna(), bins=20, kde=True)\nplt.title('PreInt_EduHx-computerinternet_hoursday')\nplt.xlabel('Valor')\nplt.ylabel('Cantidad')\n\nplt.tight_layout()\nplt.show()","metadata":{"id":"m-0tVt8CaTyq","outputId":"9e74368a-60e3-4680-9c31-d0c72c366e75","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:38.909309Z","iopub.execute_input":"2024-12-04T08:51:38.909762Z","iopub.status.idle":"2024-12-04T08:51:39.308431Z","shell.execute_reply.started":"2024-12-04T08:51:38.909717Z","shell.execute_reply":"2024-12-04T08:51:39.307242Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 5. Preprocesamiento y Codificación\n\nEl **preprocesamiento** de los datos y su **codificación** son pasos cruciales para usarlos como entrada a un modelo. Es importante tener en cuenta que este proceso debe ser diseñado de manera que se pueda integrar fácilmente mediante **pipelines** al modelo final, asegurando así una transición fluida y una optimización del flujo de trabajo.\n","metadata":{"id":"7ctyhgfiaTyq"}},{"cell_type":"code","source":"train_supervized['FGC-Season'] = train_supervized['FGC-Season'].fillna('Unknown')\ntrain_supervized['SDS-Season'] = train_supervized[\"SDS-Season\"].fillna('Unknown')\ntrain_supervized['CGAS-Season'] = train_supervized[\"CGAS-Season\"].fillna('Unknown')\ntrain_supervized['Physical-Season'] = train_supervized[\"Physical-Season\"].fillna('Unknown')\ntrain_supervized['PAQ_E-Season'] = train_supervized[\"PAQ_E-Season\"].fillna('Unknown')","metadata":{"id":"fMQjD19sfug_","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.309801Z","iopub.execute_input":"2024-12-04T08:51:39.310123Z","iopub.status.idle":"2024-12-04T08:51:39.321405Z","shell.execute_reply.started":"2024-12-04T08:51:39.310094Z","shell.execute_reply":"2024-12-04T08:51:39.320432Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 5.1 Imputaciones, eliminacion, etc","metadata":{"id":"f34aZIFFaTyq"}},{"cell_type":"markdown","source":"Como los valores del Fitness Gram Child tiene mucha relevancia la edad y el sexo, se hará una imputación de los datos llenando valores faltantes con la mediana según el sexo y la edad.","metadata":{"id":"oSt_hfVefxoW"}},{"cell_type":"code","source":"grouped = train_supervized.groupby(['Basic_Demos-Sex', 'Basic_Demos-Age'])\ntrain_supervized[FGC_measures] = grouped[FGC_measures].transform(lambda x: x.fillna(x.median()))","metadata":{"id":"Fl1GJWreaTyq","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.322873Z","iopub.execute_input":"2024-12-04T08:51:39.323290Z","iopub.status.idle":"2024-12-04T08:51:39.444963Z","shell.execute_reply.started":"2024-12-04T08:51:39.323247Z","shell.execute_reply":"2024-12-04T08:51:39.443841Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Los **valores faltantes** son casos aislados en los que no se registraron datos para cierta **edad** y **sexo**, lo que hace que no sea apropiado aplicar la **mediana** para imputarlos.\n\nEn este caso, lo más adecuado es **eliminar las dos columnas** que tienen muchos valores faltantes. Además, para los **registros faltantes**, se puede optar por **eliminarlos** para evitar que afecten el análisis.\n","metadata":{"id":"ZxvO4s6oaTyq"}},{"cell_type":"code","source":"train_supervized['SDS-SDS_Total_T'] = train_supervized['SDS-SDS_Total_T'].fillna(50)","metadata":{"id":"q3HRcf9MgIna","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.446170Z","iopub.execute_input":"2024-12-04T08:51:39.446484Z","iopub.status.idle":"2024-12-04T08:51:39.452720Z","shell.execute_reply.started":"2024-12-04T08:51:39.446455Z","shell.execute_reply":"2024-12-04T08:51:39.451718Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Los valores imposibles o errores se marcan como 0\ntrain_supervized[physical_measures] = train_supervized[physical_measures].replace(0, np.nan)\n\n# Usamos la mediana para imputar la altura y el peso agrupando según la edad y sexo\ngrouped = train_supervized.groupby(['Basic_Demos-Sex', 'Basic_Demos-Age'])\ntrain_supervized['Physical-Height'] = grouped['Physical-Height'].transform(lambda x: x.fillna(x.median()))\ntrain_supervized['Physical-Weight'] = grouped['Physical-Weight'].transform(lambda x: x.fillna(x.median()))\n\n# Multiplicado por 703 para ajustar las unidades del peso y altura\ntrain_supervized['Physical-BMI'] = train_supervized['Physical-Weight'] / train_supervized['Physical-Height'] ** 2 * 703\n\n# Se marcan como valores nulos los valores imposibles de la presión arterial\ntrain_supervized[bp_hr_cols] = train_supervized[bp_hr_cols].mask(train_supervized[bp_hr_cols] < 50, np.nan)\nmask = (train_supervized['Physical-Systolic_BP'] <= train_supervized['Physical-Diastolic_BP'])\ntrain_supervized[bp_hr_cols] = train_supervized[bp_hr_cols].mask(mask, np.nan)\n\n# Imputamos con la mediana los demás valores\ntrain_supervized['Physical-HeartRate'] = train_supervized['Physical-HeartRate'].fillna(train_supervized['Physical-HeartRate'].median())\ntrain_supervized['Physical-Diastolic_BP'] = train_supervized['Physical-Diastolic_BP'].fillna(train_supervized['Physical-Diastolic_BP'].median())\ntrain_supervized['Physical-Systolic_BP'] = train_supervized['Physical-Systolic_BP'].fillna(train_supervized['Physical-Systolic_BP'].median())\ntrain_supervized['CGAS-CGAS_Score'] = train_supervized['CGAS-CGAS_Score'].fillna(train_supervized['CGAS-CGAS_Score'].median())\n\n# Estas columnas se eliminan debido a que tienen muchos valores faltantes\ntrain_supervized = train_supervized.drop(FGC_measures_zone, axis=1)\ntrain_supervized = train_supervized.drop(['FGC-FGC_GSD'], axis=1)\ntrain_supervized = train_supervized.drop(['FGC-FGC_GSND'], axis=1)\ntrain_supervized = train_supervized.drop(['SDS-SDS_Total_Raw'], axis=1)\ntrain_supervized = train_supervized.drop('Physical-Waist_Circumference', axis=1)\ntrain_supervized = train_supervized.drop(columns=['Fitness_Endurance-Season', 'Fitness_Endurance-Max_Stage', 'Fitness_Endurance-Time_Mins', 'Fitness_Endurance-Time_Sec'])\ntrain_supervized = train_supervized.drop(columns=['PAQ_A-Season', 'PAQ_A-PAQ_A_Total', 'PAQ_C-Season', 'PAQ_C-PAQ_C_Total'])\ntrain_supervized = train_supervized.drop(columns=BIA_mesures)","metadata":{"id":"-nrMhu4raTyr","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.454116Z","iopub.execute_input":"2024-12-04T08:51:39.454435Z","iopub.status.idle":"2024-12-04T08:51:39.521493Z","shell.execute_reply.started":"2024-12-04T08:51:39.454405Z","shell.execute_reply":"2024-12-04T08:51:39.520625Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_supervized['PAQ_E-PAQ_E_Total'] = train_supervized['PAQ_E-PAQ_E_Total'].fillna(0)","metadata":{"id":"5OSJBHePaTyr","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.522800Z","iopub.execute_input":"2024-12-04T08:51:39.523210Z","iopub.status.idle":"2024-12-04T08:51:39.528750Z","shell.execute_reply.started":"2024-12-04T08:51:39.523168Z","shell.execute_reply":"2024-12-04T08:51:39.527723Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_supervized = train_supervized.dropna()\ntrain_supervized = train_supervized.drop(columns=['id'])","metadata":{"id":"6T-aTFw-aTys","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.530220Z","iopub.execute_input":"2024-12-04T08:51:39.530675Z","iopub.status.idle":"2024-12-04T08:51:39.548335Z","shell.execute_reply.started":"2024-12-04T08:51:39.530607Z","shell.execute_reply":"2024-12-04T08:51:39.547237Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# El dataset ya no tiene datos faltantes\ntrain_supervized.info()","metadata":{"id":"H-fJFlxyaTys","outputId":"f6786239-28eb-486f-8ceb-4dce176b7ee1","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.549767Z","iopub.execute_input":"2024-12-04T08:51:39.550198Z","iopub.status.idle":"2024-12-04T08:51:39.568326Z","shell.execute_reply.started":"2024-12-04T08:51:39.550154Z","shell.execute_reply":"2024-12-04T08:51:39.567248Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 5.2 Separamos el conjunto de datos","metadata":{"id":"fNtVUmMNaTys"}},{"cell_type":"code","source":"# Quitamos variables objetivo\nX = train_supervized.drop(columns=['PCIAT-PCIAT_Total', 'sii'])\ny = train_supervized['sii']\n\n# Split\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=9)","metadata":{"id":"4gmr65dXaTys","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.569596Z","iopub.execute_input":"2024-12-04T08:51:39.569982Z","iopub.status.idle":"2024-12-04T08:51:39.586630Z","shell.execute_reply.started":"2024-12-04T08:51:39.569950Z","shell.execute_reply":"2024-12-04T08:51:39.585486Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### 5.3 Encoders","metadata":{"id":"ugU8GdZPaTyt"}},{"cell_type":"markdown","source":"Vamos a preprocesar los valores, inicialmente se intento hacer con pipelines, pero debido a valores faltantes en el test habían muchos errores que eran díficil de usar con pipelines, además de que el preprocesamiento usado es un poco más complejo que usar un simple imputador con media.","metadata":{}},{"cell_type":"code","source":"'''\n\nnum_cols = X.select_dtypes(include=['number']).columns\ncat_cols = X.select_dtypes(include=['object']).columns\n\nnumeric_transformer = Pipeline(\n    steps=[(\"scaler\", NaNPassthroughScaler())]\n)\n\ncategorical_transformer = Pipeline(\n    steps=[\n        #('replace_nan', SimpleImputer(strategy='constant', fill_value='Missing')),\n        ('onehot', OneHotEncoder())\n    ]\n)\n\npreprocessor = ColumnTransformer(\n    transformers=[\n        (\"num\", numeric_transformer, num_cols),\n        (\"cat\", categorical_transformer, cat_cols),\n    ]\n)\n'''","metadata":{"id":"rG_56L7XaTyt","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.599999Z","iopub.execute_input":"2024-12-04T08:51:39.600333Z","iopub.status.idle":"2024-12-04T08:51:39.608344Z","shell.execute_reply.started":"2024-12-04T08:51:39.600303Z","shell.execute_reply":"2024-12-04T08:51:39.607420Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Creación del pipeline de preprocesamiento\n#preprocessing_pipeline  = Pipeline([(\"preprocessing\", preprocessor)])","metadata":{"id":"8mPBltsdkou0","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.609539Z","iopub.execute_input":"2024-12-04T08:51:39.609873Z","iopub.status.idle":"2024-12-04T08:51:39.627690Z","shell.execute_reply.started":"2024-12-04T08:51:39.609843Z","shell.execute_reply":"2024-12-04T08:51:39.626726Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"'''\npreprocessing_pipeline.fit(X_train)\n\nX_train_preprocessed = preprocessing_pipeline.transform(X_train)\nX_test_preprocessed = preprocessing_pipeline.transform(X_test)\n\nnum_features = len(num_cols)\ncategorical_scaler_fitted = preprocessing_pipeline.named_steps['preprocessing'].named_transformers_['cat']\ncat_feature_names = categorical_scaler_fitted.get_feature_names_out(cat_cols)\nall_feature_names = list(num_cols) + list(cat_feature_names) # Esto es para tener el nombre de las columnas\n\n\n\n#Los volvemos a convertir a un dataframe\nX_train_preprocessed = pd.DataFrame(X_train_preprocessed, columns=all_feature_names)\nX_test_preprocessed = pd.DataFrame(X_test_preprocessed, columns=all_feature_names)\n'''","metadata":{"id":"CigWB0AxN_ky","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.629077Z","iopub.execute_input":"2024-12-04T08:51:39.629369Z","iopub.status.idle":"2024-12-04T08:51:39.643422Z","shell.execute_reply.started":"2024-12-04T08:51:39.629332Z","shell.execute_reply":"2024-12-04T08:51:39.642274Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"num_cols = X_train.select_dtypes(include=['number']).columns\ncat_cols = X_train.select_dtypes(include=['object']).columns\n\n\nscaler = StandardScaler()\n\nX_train_num = scaler.fit_transform(X_train[num_cols])\nX_test_num = scaler.transform(X_test[num_cols])\n\n\nX_train_cat = X_train[cat_cols].fillna('Missing')\nX_test_cat = X_test[cat_cols].fillna('Missing')\n\nencoder = OneHotEncoder(handle_unknown='ignore', sparse_output=False)\n\nX_train_cat_encoded = encoder.fit_transform(X_train_cat)\nX_test_cat_encoded = encoder.transform(X_test_cat)\n\ncat_feature_names = encoder.get_feature_names_out(cat_cols)\n\n\nX_train_preprocessed = np.hstack([X_train_num, X_train_cat_encoded])\nX_test_preprocessed = np.hstack([X_test_num, X_test_cat_encoded])\n\n\nall_feature_names = list(num_cols) + list(cat_feature_names)\n\n# Convert to DataFrame\nX_train_preprocessed = pd.DataFrame(X_train_preprocessed, columns=all_feature_names)\nX_test_preprocessed = pd.DataFrame(X_test_preprocessed, columns=all_feature_names)","metadata":{"id":"6ZBaK_lJvzqx","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.644740Z","iopub.execute_input":"2024-12-04T08:51:39.645025Z","iopub.status.idle":"2024-12-04T08:51:39.685454Z","shell.execute_reply.started":"2024-12-04T08:51:39.644998Z","shell.execute_reply":"2024-12-04T08:51:39.684495Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 6. Reagrupamiento o visualización de los datos con t-SNE","metadata":{"id":"rOHiu3hfaTyt"}},{"cell_type":"markdown","source":"Se utiliza el algoritmo t-SNE (t-Distributed Stochastic Neighbor Embedding) para reducir la dimensionalidad de los datos y visualizarlos en dos dimensione, esto permitirá interpretar patrones en los datos.","metadata":{"id":"YWy9p0P_lERJ"}},{"cell_type":"markdown","source":"Ajuste del parámetro perplexity:","metadata":{"id":"sTxPJRWAmMlq"}},{"cell_type":"code","source":"perplexity = np.arange(5, 55, 5) # Valores de perplexiry entre 5 y 50 con incrementos de 5\ndivergence = []\n\nfor i in perplexity:\n    # Configuración del valor actual de perplexity\n    model = TSNE(n_components=2, init=\"pca\", perplexity=i)\n\n    reduced = model.fit_transform(X_train_preprocessed)\n    divergence.append(model.kl_divergence_)\n\n# Visualización de la divirgencia KL\nfig = px.line(x=perplexity, y=divergence, markers=True)\nfig.update_layout(xaxis_title=\"Perplexity Values\",  # Eje x\n                  yaxis_title=\"Divergence\")     # Eje y\nfig.update_traces(line_color=\"red\", line_width=1)\nfig.show()","metadata":{"id":"Fl_CfArFaTyt","outputId":"84f871f5-0601-4f08-f7c2-ff26f61d500d","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:51:39.686792Z","iopub.execute_input":"2024-12-04T08:51:39.687128Z","iopub.status.idle":"2024-12-04T08:53:17.663503Z","shell.execute_reply.started":"2024-12-04T08:51:39.687096Z","shell.execute_reply":"2024-12-04T08:53:17.662472Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Aplicación de t-SNE con perplexity óptimo para transformar los datos:","metadata":{"id":"2Tg28E_ZmnjW"}},{"cell_type":"code","source":"tsne = TSNE(n_components=2,perplexity=100, random_state=42)\nX_train_tsne = tsne.fit_transform(X_train_preprocessed)\n\ntsne.kl_divergence_","metadata":{"id":"dIi6C3w6aTyt","outputId":"8b50325a-d69a-4205-e42e-df8dd69ac5e3","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:17.665005Z","iopub.execute_input":"2024-12-04T08:53:17.665435Z","iopub.status.idle":"2024-12-04T08:53:33.176161Z","shell.execute_reply.started":"2024-12-04T08:53:17.665389Z","shell.execute_reply":"2024-12-04T08:53:33.174080Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Visualización de los datos","metadata":{"id":"XbIsDCzhmzZ7"}},{"cell_type":"code","source":"fig = px.scatter(x=X_train_tsne[:, 0], # Primera dimensión\n                 y=X_train_tsne[:, 1], # Segunda dinemsión\n                 color=y_train)       # Color según las etiquetas\nfig.update_layout(\n    title=\"t-SNE visualization\",\n    xaxis_title=\"First t-SNE\",\n    yaxis_title=\"Second t-SNE\",\n)\nfig.show()\n","metadata":{"id":"Hya5NwiQaTyt","outputId":"0336f6a9-3d1f-4116-b9ee-886c447a18e1","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:33.177250Z","iopub.execute_input":"2024-12-04T08:53:33.177578Z","iopub.status.idle":"2024-12-04T08:53:33.551779Z","shell.execute_reply.started":"2024-12-04T08:53:33.177529Z","shell.execute_reply":"2024-12-04T08:53:33.550681Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"No se puede ver realmente una clara agrupación de los datos, pero si se puede notar como es que si hay un patrón que se sigue con la variable objetivo.","metadata":{}},{"cell_type":"markdown","source":"---\n## 7. Tipo de problema\nEl problema se manejará como una **clasificación**, en la cual, basado en un valor estimado del conjunto de prueba (**test**),se usará la escala del **SII** para cumplir con los requisitos establecidos.\n\n**Por qué  clasificación?**\n- Los valores a predecir son discretos, no son continuos\n- Se ajusta más a las características del problema, donde el objetivo es categorizar en lugar de estimar valores númericos.","metadata":{"id":"q4TeawVYaTyt"}},{"cell_type":"markdown","source":"---\n## 8. Modelo inicial\nPara establecer una **base line**, se utilizan varios modelos simples que permitirán comparar la efectividad de otros enfoques más avanzados. Los modelos considerados incluyen tanto algoritmos lineales como basados en árboles.","metadata":{"id":"RZzM7jVJaTyu"}},{"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nfrom sklearn.linear_model import Lasso\nfrom sklearn.ensemble import HistGradientBoostingClassifier","metadata":{"id":"2sXSHGxNmjPg","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:33.553148Z","iopub.execute_input":"2024-12-04T08:53:33.553486Z","iopub.status.idle":"2024-12-04T08:53:33.624571Z","shell.execute_reply.started":"2024-12-04T08:53:33.553455Z","shell.execute_reply":"2024-12-04T08:53:33.623093Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+oAAAJkCAYAAACGU9vOAAAgAElEQVR4Xuy9adReRZX2f95vEpL0WhqVSdp2AHFIq8igLWJCnCCLQVCQGWVIRwGBZjRNVugICA2IKB0UFUEQEGRYAaeYiHQrgwxNKwgq2khAFFmrEwj97f9/ruN73e++d6pO7fvcw3M/yXW+QO6nTg2/2rVr76pddf7P/zfxVHpEQAREQAREQAREQAREQAREQAREQATGgsD/kaM+Fv2gSoiACIiACIiACIiACIiACIiACIhATUCOugRBBERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAE5KhLBkRABERABERABERABERABERABERgjAjIUR+jzlBVREAEREAEREAEREAEREAEREAERECOumRABERABERABERABERABERABERABMaIgBz1MeoMVUUEREAEREAEREAEREAEREAEREAERu6or1mzpnr4kV/V5N+43RuqmTNnjk0voG433XJrtc9eew6kXn948slq5aofV4cdcvDYtFEVEQERGG8C37n5luoN224zoR+3G5uKDlo3jk3DVJEsgXGUQ3WXCIiACIiACGxMBEbqqJ97/gXVbbd/t4vvHrt/qDrt5JN6Yn7kgoXVW2fPrj61cEFP75US33X3PdXJp51R7f+R/QaS9xcvXVZd9+0bqvPPPbvaeacdS8Xr75NMYJc58xr7flhyN6hmU34nQ96wKLV27dou53LcefXDvSQr0bxT3JD3thOO+uXLLo1mM/R0bXUj2lKSxxSDtg2izr1z1YpkFvj7gw89NFZs27a1n/ci/dKrHIptPz0Sexfj0G5wcFzm5D2Wq1K1IcBNpybbbpD98/Ajj1QzZsyoXrXVVm2qOxbvePkdi0qpEiIw5gRG5qhjEr91+fJqwdFHVR/ee68ayzeu+mZ1+deu6NkxHqYDMEhFElHkYy4fG1X1Ss7XMOVuEKAn01FPGenjzqsf5iVZiead4jauBlkb3RhxCAfp4MlRj0lepF96lcNB9mOsFRtfKt9vg3QENz6a/bU4wj6SJlqLDWE+jeidKA+lE4GNhcDIHHUomde99rXr7Z5jcn/+hRc6v6eMA7/jQoV16MEH1qHqeObOeW/XSiPf2WrLLTtpGNKOMlauumNidXL6emHu3hiFs333PfdWjz7262rbbV5fvW/ebuvJBt75+X33V1tssXk1b+6cTth8zlFn+Ui/wzu2T9YbYa8/XPGjuty5c3ZdLww2Ui9fUZR778/vq39GuTa01vPCyi0XVFDWipWrqqeeejpZl9RgQX4oq+kdtg9cd9pxh/WOG9hy37H929eLSqCsoPxbbl1e2TQ8dpCSDdaX/cZ+LTlfEbnzeaf6GGl65ZOSOysD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47ekOyJzV6rubRx15OPnEK8jI2y5AMB6eTsiokNSLJFfSa+1mcdtfdHPPAblF6Z8nSJzou+b0jhAesj5tdd/u/6qCZxIno8uOeoRPpE+buOoI98Sj6gso3x+Ms9G4ZBlVA9E2mrtBqvTGTnjbVMcofELslHuJdmNzu0p/UudafVUL3NV2/kwpzf1uwiMO4GROeoWBJQXzwv3CwhKau3atY0hoIMoA2HZuTPZUByYMHG+kKucpTIxUWCXr+nm5lIeaHtTvfz7vaa377dtI/JoCs+FLDRxY7lN5+FznCLtLZXflHeT3KF/S22PpEH9cqv1yL8tn1GMm5L8+r9HePh3bP/lzkyW6hGRE+TRVlbatCtV57Z9XWp/immTzDXlF3Uqo3WK6J1hyHKTTFgjPtcnqWiqnJ4rtTF1VCjKbxjphsG7n3o26cgSW5Zb0rP91K80/qP6p5868N1ey+o1PcrpVQ+X+FD3ttVJTdzatK+ffojMIcOURVv3CPdImn549PPuqObDfuqod0VgEAQmxVEfRMWVhwiIgAhYAr0aiKLXngAMOOy48egFjWl+HghHezbUJxd9ZNsbOb8a5QO59p93ir6rdCIwLALYBb3yqqu7Pl/rv+E+rLKVrwiIgAhsLATkqG8sPa12isAGTkCO+mg72Iceo/RUqOVoazX80kbpqMPh5y3uw2+ZShCBOIHU8RS8nTpWE89VKUVABERABCwBOeqSBxEQgQ2CwKhCBjcIWANqBMMPkd0wQlMHVM2BZhMJ/VZY5kCRK7MxJsDwcVSxl+N/Y9wkVU0EREAExoaAHPWx6QpVRAREQAREQAREQAREQAREQAREQASqSo66pEAEREAEREAEREAEREAEREAEREAExoiAHPUx6gxVRQREQAREQAREQAREQAREQAREQATkqEsGREAEREAEREAEREAEREAEREAERGCMCMhRH6POUFVEQAREQAREQAREQAREQAREQAREQI66ZEAEREAEREAEREAEREAEREAEREAExoiAHPUx6gxVRQREQAREQAREQAREQAREQAREQATkqEsGREAEREAEREAEREAEREAEREAERGCMCMhRH6POGFVVvnPzLdUbtt2meuN2242qyIGXc9fd91Rr166t3jdvt4HnPYgMNwTG/XD4w5NPVitX/bg67JCD+8km9C5Y/+TOf6/e9ta/H0l5oUr9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R320vFWaCIiACIiACIiACIiACIiACIiACDQSkKMuAREBERABERABERABERABERABERCBMSIgR32MOkNVEQEREAEREAEREAEREAEREAEREAE56pIBERABERABERABERABERABERABERgjAnLUx6gzVBUREAEREAEREAEREAEREAEREAERkKMuGRABERABERABERABERABERABERCBMSIgR32MOkNVEQEREAEREAEREAEREAEREAEREAE56pIBERABERABERABERABERABERABERgjAnLUx6gzVBUREAERGCcCd919T7V27drqffN2G6dqqS5DIrBmzZrq4Ud+Vc2cOaN643bbDakUZSsCIiACIiACIhAhMDJH/cgFC6u3zp5dfWrhgki9lGaSCDz8yCPVjBkzqldttVW2Bn948snaeLeGnPo33mERxtHcwB3P5csuTb7yxUuXVQ8+9FD279Fy2qTbZc686vxzz6523mnHNq+P5Tupvptq7aQzFukXyNejjz5W3blqxVj2x7hUalDjDAsjJ592xqTw/s7Nt1TLvvyV6sUX/7fGijlg0RmnymEfFyFTPURABERABDY6AnLUN7oub25wxOFOGaWR94T6rwQGyUqO+milKtV3U81R78UZTC3KjZb41ChtqjvqlIkjP354ddghB1fo91NPX1TDv+aqK6ZGJ6iWIiACIiACIrCBEZhURx07OytWrqqeeurpau6cXZMr99jBuvfn99XY585573o7vaW/+/6CAYL8UOY7tn97crePabBrjDL/ZubMOhyQO1DcVUPet9y6vCsfvLty1Y+z9cUfmtLQMN5qyy2rm265tc5nn732nAhFRB0emcj7jokd7+md32z7SjxhjL1xuzdU/zPBHXXEzvm8uXPqvPHg71/44qXVa17zd9X83T9Up+XfWA7qcM2111ePP/676rhPLay23HKLuk/owBx68IF1n5Kd35lv4m93+tjWbbd5fSjstqntyAuPjQBAPVavfqrTRssGfbrFFpt3sbGcWbemND9c8aPq0cd+XaH+O+24Q4hxRHYo7+y7E085ra5aZEcdO2Z+rJF5qq/BhP2b03u5diI9HVjkkZI3K1Mc4zu8Y/uufupFJiw/n48tC2Ooqe9ybc2Nj2g7S+PTl+v1DOr84b33qpORu/3Nvp+TJf5++deuqKMdGOLs9Q7kC2XlHPWm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I1YBIiACIiACIiACIiACIiACIiACIhAnIEc9zkopRUAEREAEREAEREAEREAEREAERGDoBOSoDx2xChABERABERABERABERABERABERCBOAE56nFWSikCIiACIiACIiACIiACIiACIiACQycgR33oiFWACIiACIiACIiACIiACIiACIiACMQJyFGPs1JKERABERABERABERABERABERABERg6ATnqQ0esAkRABERABERABERABERABERABEQgTkCOepyVUoqACIiACIiACIiACIiACIiACIjA0AnIUR86YhUgAiIgAiIgAiIgAiIgAiIgAiIgAnECctTjrJRSBERABERABERABERABERABERABIZOQI760BGrABEQAREQAREQAREQAREQAREQARGIE5CjHmellCIgAiIgAiIgAiIgAiIgAiIgAiIwdAJy1IeOWAWIgAiIgAiIgAiIgAiIgAiIgAiIQJyAHPU4K6UUAREQAREQAREQAREQAREQAREQgaETkKM+dMQqQAREQAREQAREQAREQAREQAREQATiBOSox1kppQiIgAiIgAiIgAiIgAiIgAiIgAgMnYAc9aEjVgEiIAIiIAIiIAIiIAIiIAIiIAIiECcgRz3OSilFQAREQAREQAREQAREQAREQAREYOgE5KgPHbEKEAEREAEREAEREAEREAEREAEREIE4ATnqcVZKKQIiIAIiIAIiIAIiIAIiIAIiIAJDJyBHfeiIVYAIiIAIiIAIiIAIiIAIiIAIiIAIxAnIUY+zUkoREAEREAEREAEREAEREAEREAERGDoBOepDR6wCREAEREAEREAE+iHwnZtvqW7/3verdS+sq7N59i/PVnPnzKkWHnNUNXPmzHDW37jqm9XlX7uiK/0mm7ykuuHaa6orv3lNdd23b+j628te+tLqyq9fXpfx/t3nVy+++L+dv+/6nl2qpUsWh8uezIRr1qyp9tjrw+Eq3HbLd3riGs54yAlT7TzzM6dX75u3W6fkc8+/oLrt9u921cSnGXI1lb0IiIAIhAjIUQ9hUiIREAEREAEREIFRE3j4kUeqMxYtrma9fFZ14vHHVm/cbru6Cvj90yedXE3bZFrHke6lbrvMmVcn9w6adfSuueqK6lVbbdWV7ZELFtaLBZ87Z+l6f+ul/MlKiwWPiy6+pK77si99ocsZv+vue6ozl5zVmulk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lwyIgAiIgAiIgAiIgAiIgAiIgAiIwBgRkKM+Rp2hqoiACIiACIiACIiACIiACIiACIiAHHXJgAiIgAiIgAiIgAiIgAiIgAiIgAiMEYGROepHLlhYvXX27OpTCxeEmv/FS5dVDz70UHX5sktD6XOJ7rr7nurk086o7ly1oq989LIIiIAIiIAIiIAIiIAIiIAIiIAIjIKAHPVRUFYZIiACIiACIiACIiACIiACIiACIhAkMKmO+sOPPFLd+/P76qru8I7tqzdut12n2nZH/Ts331I99dTT1dw5u3alYeI1a9ZUK1auSqZJ7agj/d333Fs9+tivq223eX31vnm7BXEpmQiIgAiIgAiIgAiIgAiIgAiIgAgMl8CkOeqLFi+p7vjJndWrttqqmrbptOrRRx+rjvz44dVhhxxct5iOOv5/3Qvr6t/+8OST1a7v2aVaumRxhwqc/U/uDJmAAAAgAElEQVSfdHI1bZNp1ayXz6rz2XbbbToh895R9+mfeOKJatbLZlXXXHXFcEkrdxEQAREQAREQAREQAREQAREQAREIEJgURx0O96mnL6qOOOyQzm72N676ZnX5167onCWHo37dt2/oct5/uOJH1VmfPac64fhjqw/vvVfdvPfvPr/acYcdOs47HfE958+vz8N7Rx0LBI8//ruOY47d9QWfPK467lMLq5132jGATElEQAREQAREQAREQAREQAREQAREYHgEJsVRTzWHTvj5555dO8xw1G9dvrz6we3Lu5Jj9xzP5y84v+I7t93ynWrmzJmddOeef0H1m9/+tt5VTznqv/jFL6tLLr6w3s3XIwIiIAIiIAIiIAIiIAIiIAIiIALjRGDSHHU40Mtv/271x2eeqcPV+VhHPXXruz27zl13hLrb59k/P1v95bnn6t35VOj7GYsW13+Hoz579luqgz62v5z2cZJK1UUEREAEREAEREAEREAEREAENmICk+Kocycc58133eXd1YwZM+ouwGfUSo663S2no453Ug925nOfZ8PvP7/v/uqnP7urPvvOcjdiWVDTRUAEREAEREAEREAEREAEREAExoDApDjqcLDhINsL3FKh7zij7sPa9973o9Wb3/ym+kw6zqMfs/DYOh8bxg7Hm//2jjr+hsemR57zdpsb/sb7GPSbqiACIiACIiACIiACIiACIiACIrCBEpgURx0Xx139rWursxafWZ9H5+VydmebZ9RxUdwpJ51Q4z/vgovqm+Lt7veBhxxe/23RGafWn26DY37mkrMmPuU2pzrt5JPW21E/csHC+hb5z52ztHbW6cjzgjosGHzp3y6rTjvln3S53AYq9GqWCIiACIiACIiACIiACIiACIwzgUlx1AEEl8Ldd/8DNZtNNnnJxDnxA+pb333o+1tnz65vf2e6BUcf1bnxHb/h1vYTTzmt65w7Qurh3OOCudQZ9aVnf65eHOCzx+4fqp16PLx9/szPnK7vq4+z5KpuIiACIiACIiACIiACIiACIrCBEhiZo57iB2d59eqnijvXcMYffuRXjemY5o3bvaHrBvhcv0XL3kD7Xc0SAREQAREQAREQAREQAREQAREYUwKT6qiPKRNVSwREQAREQAREQAREQAREQAREQAQmjYAc9UlDr4JFQAREQAREQAREQAREQAREQAREYH0CctQlFSIgAiIgAiIgAiIgAiIgAiIgAiIwRgTkqI9RZ6gqIiACIiACIiACIiACIiACIiACIiBHXTIgAiIgAiIgAiIgAiIgAiIgAiIgAmNEQI76GHWGqiICIiACIiACIiACIiACIiACIiACctQlAyIgAiIgAiIgAiIgAiIgAiIgAiIwRgTkqI9RZ6gqIiACIiACIiACIiACIiACIiACIiBHXTIgAiIgAiIgAiIgAiIgAiIgAiIgAmNEQI76GHWGqiICIiACIiACIiACIiACIiACIiACctQlAyIgAiIgAiIgAiIgAiIgAiIgAiIwRgTkqI9RZ6gqIiACIiACIiACIiACIiACIiACIiBHXTIgAiIgAiIgAiIgAiIgAiIgAiIgAmNEQI76GHWGqiICIiACIiACIiACIiACIiACIiACctQlAyIgAiIgAiIgAiIgAiIgAiIgAiIwRgTkqI9RZ6gqIiACIiACIiACIiACIiACIiACIiBHXTIgAiIgAiIgAiIgAiIgAiIgAiIgAmNEQI76GHWGqiICIiACIiACIiACIiACIiACIiACctQlAyIgAiIgAiIgAiIgAiIgAiIgAiIwRgTkqI9RZ6gqIiACIiACIiACIiACIiACIiACIiBHXTIgAiIgAiIgAiIgAiIgAiIgAiIgAmNEQI76GHWGqiICIiACIiACIiACIiACIiACIiACctQlAyIgAiIgAiIgAiIgAiIgAiIgAiIwRgTk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+yTURaisdl3od0n96QnO2PrVLNDf2J9RjLFB3wpryG8g3yjHvb9YmUziSR3bvtYue0zZ8gp1l33ANm/84fiiz7O5DvuKqccYoW6ng3qxI5Ri2GpusW03xne47BzPST+u/YGeDLIn1+12aHOOqYs8Qj3Gpl0cMA7Qfa6LQ4yPD/UtIaEeMz6J4RLTjvL2Aa3xCTIekv7F1X/Y7Sjk01Hn+IIT/Iy2z1A/mbePsbnx39UlUBWhXsoio9HLSnYp09Vpwdhx+YRaud5bK+nCSSCsVod6puUt6/21Us56y0cl2kZWZsiT7xyJrGllvb81dhkroGPz5MtL6ARy18DDxzNveeHvsGLumriKLV+p/GfIhjFYw57mWN9kD/597CTdkK3G5i8tHdQTVoOz9i+lrqc8daufiWWWxTZ0/bamDbamD49pR3nqojW2G1NXecucpx5d+YkpXwxbV9ox/UiobcYwjLknhnPMPTHvytJ25N4YVlnfnbfebP9birF7jJ1pFogK1VtKQj7exSam/Hm45/EjyF/I1vP2MVntgveXh0CbF+rlwcJUSYAE2isBiczQ36FHSCvCR+39qKVmhNl4rFJniQopdR6YHgnUIoHWCPVaLA/zRAIkUFkCvmijyuaCbyOBbAQo1LPx4t0kQAJ1TsAO/0NxEb4J8Zx11TMrKoTcyQF5WZ/l/SRQzwQo1Ou5dlk2Eig/AQr18jPmG0pPgEK99EyZIgmQQB0QgGA/cOBgUpI8odV1gIBFIIGaIVCqkOyaKRAzQgIkUFECWcLkK5oxvowEUghQqNM8SIAESIAESIAESIAESIAESIAESKCGCFCo11BlMCskQAIkQAIkQAIkQAIkQAIkQAIkQKFOGyABEiABEiABEiABEiABEiABEiCBGiJAoV5DlcGskAAJkAAJkAAJkAAJkAAJkAAJkACFOm2ABEiABEiABEiABEiABEiABEiABGqIAIV6DVUGs0ICJEACJEACJEACJEACJEACJEACFOq0ARIgARIgARIgARIgARIgARIgARKoIQIU6jVUGcwKCZAACZAACZAACZAACZAACZAACVCo0wZIgARIgARIgARIgARIgARIgARIoIYItCmhfs/yFebNXbvMqhXLawghs0ICJEACJEACJEACJEACJEACJEACpSNAoV46lkyJBEiABEiABEiABEiABEiABEiABFpN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CZAACZSbAIV6uQkzfRIgARIgARIgARIgARIgARIgARLIQIBCPQMs3koCJEACJEACJEACJEACJEACJEAC5SZAoV5uwkyfBEiABEiABEiABEiABEiABEiABDIQoFDPAIu3kgAJkAAJkAAJkAAJkAAJkAAJkEC5CVCol5sw0ycBEiABEiABEiABEiABEiABEiCBDAQo1DPA4q0kQAIkQAIkQAIkQAIkQAIkQAIkUG4CFOrlJsz0SYAESIAESIAESIAESIAESIAESCADAQr1DLB4KwmQAAmQAAmQAAmQAAmQAAmQAAmUmwCFerkJM30SIAESIAESIAESIAESIAESIAESyECAQj0DLN5KAiRAAiRAAiRAAiRAAiRAAiRAAuUmQKFebsJMnwRIgARIgARIgARIgARIgARIgAQyEKBQzwCLt5IACZAACZAACZAACZAACZAACZBAuQlQqJebcBnSP3DggBk64pLolJ/d8JTp3Llz9P21cKOrjLN/cpv5zuDzC9lbsHCReXbTc0XZte8pZ1l+u/kFM/f2O4peYbMePWas+cf776feU848Mm0SIAESIAESIAESIAESIIG2R4BCve3VWSHHT63fYJYsXWa+eOKJZsW9dxeJ8e2vvGpmN841DUc1mEceXNXmhLoUUsqIf5915hnm54sWFtUYRDDE8Lhrx5qrx1xZldqcNafRvPjStuTdrnygDCvuu9/MnTPb9O/Xtyp55EtJgARIgARIgARIgARIgATaDgEK9QrWFQTbqT17mNN69SrJW0UgnnvOADOvcU6LNO9ZvsK8/F/bzZrVD7X4GwTulq2/q5q4jQWAMn740Udmz563k0dQFkxMyPXW7t3mR1OnmXVr11RtMmLkpZeZLsd2SfJ4zNFHm/VPPl5UvIdX/8ps+8PLZtWK5bHFdt6HKIOnNzxjLh4xvGplbVUB6uzhStaHvOuNN//bDL3owqLIkjrDyuKQAAnUCIFSj1lqpFhtNhusj+pUHblXhzvf+i8CFRHqWN2dNmNmKvOFC+Ynq43jJkw03+jd29w0cUKbqCMMoN/a/eeoldIBAwebns1CvbWCTcBIWLVvNTlNqONvjz2xzgj3WoWNMl5z9Rjz4MOrkxDyy783qsg24EA3/edvSsY0KwcJ0ccEAvKKy2aKyYbjjzsuaNOwj7T6kHZkM0jLM545rdepFPYZKhaTP506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)","metadata":{"id":"p7HcYTg52Pk_"}},{"cell_type":"code","source":"# Evaluación de los modelos\ncks_scorer = make_scorer(cohen_kappa_score)","metadata":{"id":"IyftcZVNpQ5E","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:33.626005Z","iopub.execute_input":"2024-12-04T08:53:33.626336Z","iopub.status.idle":"2024-12-04T08:53:33.631619Z","shell.execute_reply.started":"2024-12-04T08:53:33.626304Z","shell.execute_reply":"2024-12-04T08:53:33.630456Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Definición de modelos base de clasificación\nrfc = RandomForestClassifier(random_state=9)\nlogreg = LogisticRegression(random_state=9)\ngbc = GradientBoostingClassifier(random_state=9)\nsvc = SVC(probability=True, random_state=9)\nlasso_clf = LogisticRegression(penalty='l1', solver='saga', random_state=9)\nhgbc = HistGradientBoostingClassifier(random_state=9)","metadata":{"id":"bfE1oijtkud-","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:33.633003Z","iopub.execute_input":"2024-12-04T08:53:33.633364Z","iopub.status.idle":"2024-12-04T08:53:33.646391Z","shell.execute_reply.started":"2024-12-04T08:53:33.633295Z","shell.execute_reply":"2024-12-04T08:53:33.645282Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Creación de Pipelines con cada modelo para asegurar que el preprocesamiento se aplique antes del entrenamiento.","metadata":{"id":"7XMFLRbjxj6k"}},{"cell_type":"code","source":"# Lista de modelos\nmodels = {\n    \"Logistic Regression\": logreg,\n    \"Random Forest\": rfc,\n    \"SVM\": svc,\n    \"Lasso\": lasso_clf,\n    \"Gradient Boosting\": gbc,\n    \"HistGradientBoostingClassifier\": hgbc\n}","metadata":{"id":"O_MVK980aTyv","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T09:03:15.318404Z","iopub.execute_input":"2024-12-04T09:03:15.318818Z","iopub.status.idle":"2024-12-04T09:03:15.324295Z","shell.execute_reply.started":"2024-12-04T09:03:15.318782Z","shell.execute_reply":"2024-12-04T09:03:15.323075Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Evaluación de Pipelines","metadata":{"id":"aXDH9gsjxybO"}},{"cell_type":"code","source":"# Lista para Almacenar Resultados\ncks_scores = []\n\n# Evaluación de los modelos con cross validation con 5 folds\nfor model_name, model in models.items():\n    scores = cross_val_score(model, X_train_preprocessed, y_train, cv=5, scoring=cks_scorer)\n    mean_score = scores.mean()\n    cks_scores.append((model_name, mean_score))","metadata":{"id":"MxolZI4IaTyv","outputId":"6a701536-f74c-46c5-9021-eb7a9fd663c8","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T09:03:19.275713Z","iopub.execute_input":"2024-12-04T09:03:19.276866Z","iopub.status.idle":"2024-12-04T09:03:53.016307Z","shell.execute_reply.started":"2024-12-04T09:03:19.276822Z","shell.execute_reply":"2024-12-04T09:03:53.015317Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for model_name, score in cks_scores:\n    print(f\"{model_name} Cross-Validation Cohen's Kappa Score: {score:.4f}\")","metadata":{"id":"IctmqrkAaTyv","outputId":"d5e439cf-b16b-4d27-b05a-3bab6851e151","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T09:39:11.271479Z","iopub.execute_input":"2024-12-04T09:39:11.272600Z","iopub.status.idle":"2024-12-04T09:39:11.279130Z","shell.execute_reply.started":"2024-12-04T09:39:11.272550Z","shell.execute_reply":"2024-12-04T09:39:11.278057Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cks_scores","metadata":{"id":"D_oeERaMoYkP","outputId":"ec47f4d5-a514-488a-e83c-297621197e7c","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:57.548518Z","iopub.execute_input":"2024-12-04T08:53:57.548840Z","iopub.status.idle":"2024-12-04T08:53:57.579165Z","shell.execute_reply.started":"2024-12-04T08:53:57.548810Z","shell.execute_reply":"2024-12-04T08:53:57.577858Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 9. Metodo de Busqueda Hiperparametros y Modelo Final\nSe utiliza **RandomizedSearchCV** para realizar una búsqueda de hiperparámetros en un modelo de **GradientBoostingClassifier** para encontrar la mejor combinación de parámetro que optimice el rendimiento del modelo en términos de CKS.","metadata":{"id":"kOXgi7G_aTyv"}},{"cell_type":"markdown","source":"Se usará el HistGradientBoostingClassifier más que nada porque acepta valores nulos, y aunque no tenemos valores nulos en el training, podemos notar que en nuestro test tenemos valores nulos que sería preprocesar de manera mínima.","metadata":{}},{"cell_type":"code","source":"# Definición de los Parámetros para la Búsqueda\nparam_grid = {\n    \"max_iter\": [100, 200, 300, 500, 1000], \n    \"learning_rate\": [0.01, 0.05, 0.1, 0.2, 0.3],  \n    \"max_depth\": [3, 5, 7, 10, None], \n    \"max_leaf_nodes\": [3, 10, 20, 31, None],\n    \"min_samples_leaf\": [1, 5, 10, 20, 50, 100],  \n    \"l2_regularization\": [0, 0.01, 0.1, 1, 10],\n}","metadata":{"id":"_AtH_sBcnwKe","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:57.580850Z","iopub.execute_input":"2024-12-04T08:53:57.581212Z","iopub.status.idle":"2024-12-04T08:53:57.594740Z","shell.execute_reply.started":"2024-12-04T08:53:57.581182Z","shell.execute_reply":"2024-12-04T08:53:57.593423Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Usamos una cross validation de 5 folds para obtener un resultado no tán sesgado de la busqueda de hiperparámetros.","metadata":{}},{"cell_type":"code","source":"# Configuración del RandomizedSearchCV\ngrid_search = RandomizedSearchCV(\n    hgbc,\n    param_distributions=param_grid,\n    scoring=cks_scorer,\n    cv=5,\n    n_jobs=-1,\n    verbose=2\n)\n# Ajuste de los modelos y Búsqueda de Hiperparámetros\ngrid_search.fit(X_train_preprocessed, y_train)\n\nprint(\"Best Parameters:\", grid_search.best_params_)\nprint(\"Best Score (Custom Kappa):\", grid_search.best_score_)","metadata":{"id":"ZLucqDILnxRk","outputId":"df474e7b-ee0d-4a59-8760-3b3a8a0e6878","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:53:57.596056Z","iopub.execute_input":"2024-12-04T08:53:57.596394Z","iopub.status.idle":"2024-12-04T08:54:14.212204Z","shell.execute_reply.started":"2024-12-04T08:53:57.596358Z","shell.execute_reply":"2024-12-04T08:54:14.211188Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Obtención del Mejor Modelo y Predicciones\nbest_gbr = grid_search.best_estimator_\npredictions = best_gbr.predict(X_test_preprocessed)\n\n#Evaluación del Modelo con CKS en el Conjuntos de Prueba\ncks = cohen_kappa_score(y_test, predictions)\nprint(\"Test Cohen's Kappa Score:\", cks)","metadata":{"id":"MWlA1azumO6V","outputId":"f9d0e14b-114b-4d75-a93c-060f6bb91a0e","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.213600Z","iopub.execute_input":"2024-12-04T08:54:14.214621Z","iopub.status.idle":"2024-12-04T08:54:14.267082Z","shell.execute_reply.started":"2024-12-04T08:54:14.214575Z","shell.execute_reply":"2024-12-04T08:54:14.266069Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"---\n## 10. Evalaución del modelo\n","metadata":{"id":"Au-q9oh1aTyw"}},{"cell_type":"code","source":"# Preparación de los Datos de Prueba\nid_test = test['id']\ntest_kaggle = test.drop('id', axis=1)","metadata":{"id":"75kuMeFa2hTn","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.268230Z","iopub.execute_input":"2024-12-04T08:54:14.271143Z","iopub.status.idle":"2024-12-04T08:54:14.279728Z","shell.execute_reply.started":"2024-12-04T08:54:14.271103Z","shell.execute_reply":"2024-12-04T08:54:14.278568Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Manejo de Valores Faltantes\ntest_kaggle.loc[:, \"PAQ_E-PAQ_E_Total\"] = test_kaggle[\"PAQ_A-PAQ_A_Total\"].fillna(\n    test_kaggle[\"PAQ_C-PAQ_C_Total\"]\n)\n\ntest_kaggle.loc[:, \"PAQ_E-Season\"] = test_kaggle[\"PAQ_A-Season\"].fillna(\n    test_kaggle[\"PAQ_C-Season\"]\n)","metadata":{"id":"xW2eX8jj5bTs","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.281070Z","iopub.execute_input":"2024-12-04T08:54:14.281414Z","iopub.status.idle":"2024-12-04T08:54:14.293630Z","shell.execute_reply.started":"2024-12-04T08:54:14.281384Z","shell.execute_reply":"2024-12-04T08:54:14.292722Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Vamos a preprocesar los valores, inicialmente se intento hacer con pipelines, pero debido a valores faltantes en el test se marcaban muchos errores.","metadata":{}},{"cell_type":"code","source":"test_kaggle['FGC-Season'] = test_kaggle['FGC-Season'].fillna('Unknown')\ntest_kaggle['SDS-Season'] = test_kaggle[\"SDS-Season\"].fillna('Unknown')\ntest_kaggle['CGAS-Season'] = test_kaggle[\"CGAS-Season\"].fillna('Unknown')\ntest_kaggle['Physical-Season'] = test_kaggle[\"Physical-Season\"].fillna('Unknown')\ntest_kaggle['PAQ_E-Season'] = test_kaggle[\"PAQ_E-Season\"].fillna('Unknown')","metadata":{"id":"AB-Sv8TXh2hU","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.294932Z","iopub.execute_input":"2024-12-04T08:54:14.295207Z","iopub.status.idle":"2024-12-04T08:54:14.313555Z","shell.execute_reply.started":"2024-12-04T08:54:14.295181Z","shell.execute_reply":"2024-12-04T08:54:14.312481Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_kaggle = test_kaggle.drop(FGC_measures_zone, axis=1)\ntest_kaggle = test_kaggle.drop(['FGC-FGC_GSD'], axis=1)\ntest_kaggle = test_kaggle.drop(['FGC-FGC_GSND'], axis=1)\ntest_kaggle = test_kaggle.drop(['SDS-SDS_Total_Raw'], axis=1)\ntest_kaggle = test_kaggle.drop('Physical-Waist_Circumference', axis=1)\ntest_kaggle = test_kaggle.drop(columns=['Fitness_Endurance-Season', 'Fitness_Endurance-Max_Stage', 'Fitness_Endurance-Time_Mins', 'Fitness_Endurance-Time_Sec'])\ntest_kaggle = test_kaggle.drop(columns=['PAQ_A-Season', 'PAQ_A-PAQ_A_Total', 'PAQ_C-Season', 'PAQ_C-PAQ_C_Total'])\ntest_kaggle = test_kaggle.drop(columns=BIA_mesures)","metadata":{"id":"hpA15Ny1X5Ki","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.314910Z","iopub.execute_input":"2024-12-04T08:54:14.315178Z","iopub.status.idle":"2024-12-04T08:54:14.334558Z","shell.execute_reply.started":"2024-12-04T08:54:14.315153Z","shell.execute_reply":"2024-12-04T08:54:14.333358Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"num_cols = test_kaggle.select_dtypes(include=['number']).columns\ncat_cols = test_kaggle.select_dtypes(include=['object']).columns\n\n\ntest_kaggle_num = scaler.transform(test_kaggle[num_cols])\n\n\ntest_kaggle_cat = test_kaggle[cat_cols].fillna('Missing')\n\n\ntest_kaggle_cat_encoded = encoder.transform(test_kaggle_cat)\n\ncat_feature_names = encoder.get_feature_names_out(cat_cols)\n\n\ntest_kaggle_preprocessed = np.hstack([test_kaggle_num, test_kaggle_cat_encoded])\n\n\nall_feature_names = list(num_cols) + list(cat_feature_names)\n\ntest_kaggle_preprocessed = pd.DataFrame(test_kaggle_preprocessed, columns=all_feature_names)","metadata":{"id":"LgxVq3RgnkbN","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.336192Z","iopub.execute_input":"2024-12-04T08:54:14.336634Z","iopub.status.idle":"2024-12-04T08:54:14.363491Z","shell.execute_reply.started":"2024-12-04T08:54:14.336601Z","shell.execute_reply":"2024-12-04T08:54:14.362595Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Realización de Predicciones en el conjunto de Prueba\ntest_predictions = best_gbr.predict(test_kaggle_preprocessed)","metadata":{"id":"kGTP7GBp16XZ","outputId":"5f3c4097-39d4-402d-b237-1a38eefa22a3","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.364958Z","iopub.execute_input":"2024-12-04T08:54:14.365372Z","iopub.status.idle":"2024-12-04T08:54:14.400578Z","shell.execute_reply.started":"2024-12-04T08:54:14.365322Z","shell.execute_reply":"2024-12-04T08:54:14.399732Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_predictions","metadata":{"id":"Qp3IMqDOwpJd","outputId":"bcf07604-90f5-4726-87d4-3a2f18adb044","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.401597Z","iopub.execute_input":"2024-12-04T08:54:14.401916Z","iopub.status.idle":"2024-12-04T08:54:14.412141Z","shell.execute_reply.started":"2024-12-04T08:54:14.401885Z","shell.execute_reply":"2024-12-04T08:54:14.408633Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Preparación de la Submisión\nsubmission = pd.DataFrame({'id': id_test, 'target': test_predictions})\nsubmission.to_csv('submission.csv', index=False)","metadata":{"id":"XooLnqBI4PWs","trusted":true,"execution":{"iopub.status.busy":"2024-12-04T08:54:14.413400Z","iopub.execute_input":"2024-12-04T08:54:14.415306Z","iopub.status.idle":"2024-12-04T08:54:14.425986Z","shell.execute_reply.started":"2024-12-04T08:54:14.415254Z","shell.execute_reply":"2024-12-04T08:54:14.424930Z"}},"outputs":[],"execution_count":null}]}