diff --git a/notebooks/CRANK.ipynb b/notebooks/CRANK.ipynb index ea658640c28feaea0ca90ed196babc659e2bcb64..cc226c8010ee38e40ca7a404043199576ce2e788 100644 --- a/notebooks/CRANK.ipynb +++ b/notebooks/CRANK.ipynb @@ -58,7 +58,7 @@ { "cell_type": "markdown", "source": [ - "Invertimos las métricas de network proximity, ya que para estas un valor más bajo indica mejor “candidatura”, pero debemos homogeneizar el criterio de selección.\n" + "Invertimos las métricas de network proximity, ya que en estas un valor más bajo indica una mejor “candidatura”. Sin embargo, debemos homogeneizar el criterio de selección.\n" ], "metadata": { "collapsed": false @@ -114,7 +114,7 @@ { "cell_type": "markdown", "source": [ - "Generamos el ranking de las métricas, de tal forma que las métricas con valores más altos (mejor), tengan un ranking más alto (mejor)." + "Generamos el ranking de las métricas de forma que, a mayor valor (mejor métrica), mayor ranking (mejor posición)." ], "metadata": { "collapsed": false @@ -135,7 +135,7 @@ { "cell_type": "markdown", "source": [ - "Es necesario invertir los ranks para que el mejor sea el más grande (si hay N filas, el mejor pasa a valer N)." + "Es necesario invertir los rankings para que el mejor tenga el valor más alto (si hay N filas, el mejor pasa a valer N)." ], "metadata": { "collapsed": false @@ -158,7 +158,7 @@ { "cell_type": "markdown", "source": [ - "Se suman los ranks de las métricas, y se normalizan a [0‒1] para que el mejor valor sea 1." + "Se suman los rankings de las métricas y se normalizan en el rango [0‒1], de forma que el mejor valor sea 1." ], "metadata": { "collapsed": false @@ -244,7 +244,7 @@ { "cell_type": "markdown", "source": [ - "# Comparar con predicciones XGBoost Alzheimer" + "## 2.1 Comparar con predicciones XGBoost Alzheimer" ], "metadata": { "collapsed": false @@ -253,7 +253,7 @@ { "cell_type": "markdown", "source": [ - "Procedemos a comparar las predicciones de XGBoost para Alzheimer con el CRANK score." + "Procedemos a comparar las predicciones de XGBoost para Alzheimer con el Crank Score" ], "metadata": { "collapsed": false @@ -401,7 +401,7 @@ { "cell_type": "markdown", "source": [ - "# Comparar con predicciones XGBoost Esquizofrenia" + "## 2.2 Comparar con predicciones XGBoost Esquizofrenia" ], "metadata": { "collapsed": false @@ -410,7 +410,7 @@ { "cell_type": "markdown", "source": [ - "Procedemos a comparar las predicciones de XGBoost para Esquizofrenia con el CRANK score." + "Procedemos a comparar las predicciones de XGBoost para Esquizofrenia con el Crank Score." ], "metadata": { "collapsed": false @@ -528,7 +528,7 @@ { "cell_type": "markdown", "source": [ - "# Gráfico de barras de los CRANK scores" + "## 2.3 Gráfico de barras de los CRANK scores" ], "metadata": { "collapsed": false @@ -537,7 +537,7 @@ { "cell_type": "markdown", "source": [ - "Creamos un gráfico de barras que compare el número de pares enfermedad-fármaco por clase (0 y 1) en los casos donde el CRANK score es mayor a 0.9 para Alzheimer y Esquizofrenia." + "Creamos un gráfico de barras que compara el número de pares enfermedad–fármaco por clase (0 y 1) en los casos donde el Crank Score es mayor a 0.9 para Alzheimer y Esquizofrenia." ], "metadata": { "collapsed": false diff --git a/notebooks/Join_EDA_IntegratedTables.ipynb b/notebooks/Join_EDA_IntegratedTables.ipynb index e8c21e964a8f99ebafc3ad42936e5e134f516ffa..bac3388fe5c305f82e588c02151eca8fa4394a6e 100644 --- a/notebooks/Join_EDA_IntegratedTables.ipynb +++ b/notebooks/Join_EDA_IntegratedTables.ipynb @@ -28,7 +28,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 1. LIBRERÍAS" + "# 1 LIBRERÍAS" ] }, { @@ -43,16 +43,16 @@ "outputs": [], "source": [ "import dask.dataframe as dd\n", + "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import numpy as np" + "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. UNIÓN DE TABLAS" + "# 2 UNIÓN DE TABLAS" ] }, { @@ -107,7 +107,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hacemos un inner join para quedarnos con las filas presentes en ambas tablas para aquellos pares enfermedad - fármaco. Se hizo de esta manera para reducir el tamaño del DataFrame final." + "Hacemos un inner join para quedarnos con las filas presentes en ambas tablas para aquellos pares enfermedad-fármaco. Se hizo de esta manera para reducir el tamaño del DataFrame final." ] }, { @@ -642,7 +642,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Al no ser muchas filas, se pueden almacenar en 1 unica partición para trabajar mejor con los datos, hacer .compute() y usar pandas en vez de Dask." + "Al no ser muchas filas, se pueden almacenar en 1 única partición para trabajar mejor con los datos, hacer .compute() y usar pandas en vez de Dask." ] }, { @@ -706,7 +706,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Como hemos hecho .compute(), estamos trabajando con pandas, por lo que podemos hacer .describe() para obtener más informacion de los datos" + "Como hemos hecho .compute(), estamos trabajando con pandas, por lo que podemos hacer .describe() para obtener más información de los datos" ] }, { @@ -1171,11 +1171,9 @@ } ], "source": [ - "# Número de enfermedades únicas\n", "num_enfermedades = df_unificado['disease_id'].nunique()\n", "print(f\"Número de enfermedades únicas: {num_enfermedades}\")\n", "\n", - "# Número de fármacos únicos\n", "num_farmacos = df_unificado['drug_id'].nunique()\n", "print(f\"Número de fármacos únicos: {num_farmacos}\")" ] @@ -1318,7 +1316,7 @@ { "cell_type": "markdown", "source": [ - "Observamos que, al unir las tabla, la proporcion de pares enfermedad-fármaco en class 1 ha aumentando respecto a la tabla base dr_gnns, lo que ayudará al metamodelo. Aún así, se observa un clase desequilibrio de clases." + "Observamos que, al unir las tabla, la proporción de pares enfermedad-fármaco en class 1 ha aumentando respecto a la tabla base dr_gnns, lo que ayudará al metamodelo. Aún así, se observa un claro desequilibrio de clases." ], "metadata": { "collapsed": false @@ -1747,9 +1745,6 @@ "execution_count": 23, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", "def plot_boxplot(df, column, class_col='class'):\n", " data = df[[column, class_col]].dropna(subset=[column])\n", " if data.empty:\n", @@ -2063,11 +2058,9 @@ " print(f\"No hay datos para la columna '{column}'.\")\n", " return\n", "\n", - " # Calcular el histograma\n", " range_bins = (data.min(), data.max())\n", " hist_values, bin_edges = np.histogram(data, bins=bins, range=range_bins)\n", "\n", - " # Graficar\n", " plt.style.use(\"seaborn-v0_8-white\")\n", " fig, ax = plt.subplots(figsize=(8, 6), facecolor=\"white\")\n", "\n", diff --git a/notebooks/Preprocessing.ipynb b/notebooks/Preprocessing.ipynb index a6a4d95354f101a993408fb71336432e11fa9be9..2d969b15ff492d7da74843ef9ca78f3a4c858cfc 100644 --- a/notebooks/Preprocessing.ipynb +++ b/notebooks/Preprocessing.ipynb @@ -32,7 +32,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 1. LIBRERÍAS" + "# 1 LIBRERÍAS" ] }, { @@ -53,7 +53,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. CARGA DE LA TABLA UNIFICADA" + "# 2 CARGA DE LA TABLA UNIFICADA" ] }, { @@ -123,9 +123,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Eliminamos los pares enfermedad–fármaco que contienen valores nulos en alguna de las métricas.\n", - "Como vimos anteriormente, estos nulos aparecen en las métricas del modelo Network Proximity.\n", - "Dado que representan un porcentaje reducido (entre 1% y 3%), su eliminación no afectará significativamente al tamaño de la muestra." + "Eliminamos los pares enfermedad–fármaco que contienen valores nulos en alguna de las métricas. Como vimos anteriormente, estos nulos aparecen en las métricas del modelo Network Proximity. Dado que representan un porcentaje reducido (entre 1% y 3%), su eliminación no afectará significativamente al tamaño de la muestra." ] }, { @@ -156,7 +154,7 @@ { "cell_type": "markdown", "source": [ - "# 4. ANÁLISIS DE LA TABLA PREPROCESADA" + "# 4 ANÁLISIS DE LA TABLA PREPROCESADA" ], "metadata": { "collapsed": false @@ -437,7 +435,7 @@ { "cell_type": "markdown", "source": [ - "# 5. GUARDADO DE LA TABLA PREPROCESADA" + "# 5 GUARDADO DE LA TABLA PREPROCESADA" ], "metadata": { "collapsed": false diff --git a/notebooks/Transformation_EDA_GNN2_DiseaseDrug.ipynb b/notebooks/Transformation_EDA_GNN2_DiseaseDrug.ipynb index 62b5d8345d0ed1501390adf6f58bf21db16cf762..2e19d00d3eee7b79ba3c578a7381158ac0717198 100644 --- a/notebooks/Transformation_EDA_GNN2_DiseaseDrug.ipynb +++ b/notebooks/Transformation_EDA_GNN2_DiseaseDrug.ipynb @@ -32,7 +32,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 1. LIBRERÍAS" + "# 1 LIBRERÍAS" ] }, { @@ -52,7 +52,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. CARGA DE DATOS" + "# 2 CARGA DE DATOS" ] }, { @@ -102,7 +102,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 3. PREPARACIÓN DE LOS DATOS" + "# 3 PREPARACIÓN DE LOS DATOS" ] }, { @@ -964,14 +964,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 4. ANÁLISIS EXPLORATORIO" + "# 4 ANÁLISIS EXPLORATORIO" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 4.1. INFORMACIÓN GENERAL" + "## 4.1 INFORMACIÓN GENERAL" ] }, { @@ -998,7 +998,6 @@ } ], "source": [ - "# Información de Gnn_DiseaseDrug\n", "print(\"Dask DataFrame:\", Gnn_DiseaseDrug)\n", "\n", "print(\"Columnas:\", Gnn_DiseaseDrug.columns)" @@ -1097,12 +1096,8 @@ } ], "source": [ - "# Número de enfermedades únicas\n", "num_enfermedades = Gnn_DiseaseDrug['disease_id'].nunique().compute()\n", - "\n", - "# Número de fármacos únicos\n", "num_farmacos = Gnn_DiseaseDrug['drug_id'].nunique().compute()\n", - "\n", "print(f\"Número de enfermedades únicas: {num_enfermedades}\")\n", "print(f\"Número de fármacos únicos: {num_farmacos}\")" ] @@ -1227,7 +1222,7 @@ } }, "source": [ - "Queremos obtener una tabla con el nombre de la enfermedad (disease_name) correspondiente a cada id (disease_id). Para ello, cargamos la tabla de enfermedades, la cual hemos descargado anteriormente en formato .parquet a través de **Exportar_Tabla_disease.ipynb**, y hacemos un LEFT JOIN con la tabla anterior." + "Queremos obtener una tabla con el nombre de la enfermedad (disease_name) correspondiente a cada id (disease_id). Para ello, cargamos la tabla de enfermedades, la cual hemos descargado anteriormente en formato .parquet a través de **Export_Table_disease.ipynb**, y hacemos un LEFT JOIN con la tabla anterior." ] }, { @@ -1495,7 +1490,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4.6. OUTLIERS - BOXPLOTS" + "## 4.6 OUTLIERS - BOXPLOTS" ] }, { @@ -1700,7 +1695,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4.7. DISTRIBUCIONES - HISTOGRAMAS" + "## 4.7 DISTRIBUCIONES - HISTOGRAMAS" ] }, { @@ -2073,7 +2068,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4.9. SCATTER PLOT" + "## 4.9 SCATTER PLOT" ] }, { diff --git a/notebooks/Transformation_EDA_InformationPaths.ipynb b/notebooks/Transformation_EDA_InformationPaths.ipynb index cee09360de4349c6cbea292a93237b53d0834a9a..3926444136098d08e99e8b82e2283bb16e7726e8 100644 --- a/notebooks/Transformation_EDA_InformationPaths.ipynb +++ b/notebooks/Transformation_EDA_InformationPaths.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 1. LIBRERÍAS" + "# 1 LIBRERÍAS" ] }, { @@ -50,14 +50,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. CARGA DE DATOS" + "# 2 CARGA DE DATOS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Definimos la ruta del archivo Parquet, el cual ha sido creado a través de **Exportar_Tabla_InformationPath.ipynb**" + "Definimos la ruta del archivo Parquet, el cual ha sido creado a través de **Export_Table_InformationPath.ipynb**" ] }, { @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 3. PREPARACIÓN DE LOS DATOS" + "# 3 PREPARACIÓN DE LOS DATOS" ] }, { @@ -108,7 +108,7 @@ } }, "source": [ - "## 3.1. INFORMACIÓN GENERAL" + "## 3.1 INFORMACIÓN GENERAL" ] }, { @@ -181,7 +181,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Buscamos reconstruir la tabla exportada, de tal forma que tenga todos los pares enfermedad-fármaco y por qué vía (path) se llega a esa combinación. Es decir, se creará una columna por cada path, estableciendo un 1 si existe esa vía para dicho par, y un 0 si no existe.\n" + "Buscamos reconstruir la tabla exportada, de tal forma que tenga todos los pares enfermedad-fármaco y a través de que vía (path) se llega a esa combinación. Es decir, se creará una columna por cada path, estableciendo un 1 si existe esa vía para dicho par, y un 0 si no existe.\n" ] }, { @@ -1236,7 +1236,7 @@ } }, "source": [ - "# 4. ANÁLISIS EXPLORATORIO DE LOS DATOS" + "# 4 ANÁLISIS EXPLORATORIO DE LOS DATOS" ] }, { @@ -1248,7 +1248,7 @@ } }, "source": [ - "## 4.1. INFORMACIÓN GENERAL" + "## 4.1 INFORMACIÓN GENERAL" ] }, { @@ -1322,7 +1322,7 @@ } }, "source": [ - "## 4.2. DUPLICADOS" + "## 4.2 DUPLICADOS" ] }, { @@ -1379,7 +1379,7 @@ } }, "source": [ - "## 4.3. NÚMERO DE FILAS Y COLUMNAS" + "## 4.3 NÚMERO DE FILAS Y COLUMNAS" ] }, { @@ -1416,7 +1416,7 @@ } }, "source": [ - "## 4.4. VALORES NULOS" + "## 4.4 VALORES NULOS" ] }, { @@ -1517,7 +1517,7 @@ } }, "source": [ - "## 4.5. DISTRIBUCIONES - HISTOGRAMAS" + "## 4.5 DISTRIBUCIONES - HISTOGRAMAS" ] }, { @@ -1976,7 +1976,7 @@ } }, "source": [ - "## 4.6. MATRIZ DE CORRELACIÓN" + "## 4.6 MATRIZ DE CORRELACIÓN" ] }, { @@ -2061,7 +2061,7 @@ } }, "source": [ - "## 4.7. ANÁLISIS DE FRECUENCIA" + "## 4.7 ANÁLISIS DE FRECUENCIA" ] }, { diff --git a/notebooks/generate_table_results.ipynb b/notebooks/generate_table_results.ipynb index 4bb04460f6d34a8234132d63170c10c8ca5a9dbb..32872cdf8c611f6d4315cd03515db677d8c39828 100644 --- a/notebooks/generate_table_results.ipynb +++ b/notebooks/generate_table_results.ipynb @@ -3,7 +3,7 @@ { "cell_type": "markdown", "source": [ - "# 1. LIBRERÍAS" + "# 1 LIBRERÍAS" ], "metadata": { "collapsed": false @@ -36,7 +36,7 @@ { "cell_type": "markdown", "source": [ - "# 2. RESUMEN DE MÉTRICAS" + "# 2 RESUMEN DE MÉTRICAS" ], "metadata": { "collapsed": false @@ -45,7 +45,7 @@ { "cell_type": "markdown", "source": [ - "## Métricas Cross Validation" + "## 2.1 Métricas de la validación cruzada anidad (nested cross validation)" ], "metadata": { "collapsed": false @@ -54,7 +54,7 @@ { "cell_type": "markdown", "source": [ - "Creamos una única tabla que contenga todos los resultados del modelo en la cross validation" + "Creamos una única tabla que contenga todos los resultados del modelo en la validación cruzada" ], "metadata": { "collapsed": false @@ -128,7 +128,7 @@ { "cell_type": "markdown", "source": [ - "Creamoss una columa que contenga el pipeline y otra el modelo" + "Creamoss una columa que contenga el pipeline y otra para almacenar el nombre del método." ], "metadata": { "collapsed": false @@ -155,7 +155,6 @@ "columnas = [\"pipeline_name\", \"modelo\"] + [col for col in df_CV.columns if col not in [\"pipeline_name\", \"modelo\", \"pipeline\"]]\n", "df_CV = df_CV[columnas]\n", "\n", - "# Ordenar por pipeline_name y modelo\n", "df_CV = df_CV.sort_values(by=[\"pipeline_name\", \"modelo\"]).reset_index(drop=True)" ], "metadata": { @@ -187,7 +186,7 @@ { "cell_type": "markdown", "source": [ - "## Mejores hiperparámetros" + "## 2.2 Tabla con los mejores hiperparámetros" ], "metadata": { "collapsed": false @@ -196,7 +195,7 @@ { "cell_type": "markdown", "source": [ - "Almacenamos la mejor combinación de hiperparámetros para cada modelo en cada pipeline." + "Almacenamos la mejor combinación de hiperparámetros para cada método en cada pipeline." ], "metadata": { "collapsed": false @@ -238,7 +237,7 @@ } }, "source": [ - "## Métricas de Alzheimer" + "## 2.3 Tabla con las métricas de Alzheimer" ] }, { @@ -313,7 +312,6 @@ }, "outputs": [], "source": [ - "# Renombrar columna recall\n", "df_alzheimer = df_alzheimer.rename(columns={\"recall_at_100\": \"recall@100\"})" ] }, @@ -322,7 +320,6 @@ "execution_count": 33, "outputs": [], "source": [ - "# Separar pipeline_name y modelo\n", "df_alzheimer[\"pipeline\"] = df_alzheimer[\"pipeline\"].astype(str)\n", "df_alzheimer[\"pipeline_name\"] = df_alzheimer[\"pipeline\"].str.split(\"-\").str[0]\n", "df_alzheimer[\"modelo\"] = df_alzheimer[\"pipeline\"].str.split(\"-\").str[1]" @@ -367,7 +364,7 @@ } }, "source": [ - "## Métricas de Esquizofrenia" + "## 2.4 Tabla con las métricas de Esquizofrenia" ] }, { @@ -441,7 +438,6 @@ "execution_count": 40, "outputs": [], "source": [ - "# pipeline_name y modelo\n", "df_esquizofrenia[\"pipeline\"] = df_esquizofrenia[\"pipeline\"].astype(str)\n", "df_esquizofrenia[\"pipeline_name\"] = df_esquizofrenia[\"pipeline\"].str.split(\"-\").str[0]\n", "df_esquizofrenia[\"modelo\"] = df_esquizofrenia[\"pipeline\"].str.split(\"-\").str[1]" @@ -486,7 +482,7 @@ } }, "source": [ - "# 3. GRÁFICO DE BARRAS DE LAS MÉTRICAS DE TEST" + "# 3 GRÁFICO DE BARRAS DE LAS MÉTRICAS DE TEST" ] }, { @@ -501,7 +497,9 @@ { "cell_type": "markdown", "source": [ - "Creamos gráficos de barras para comparar los resultados de los distintos modelos de clasificación en los conjuntos de test de Alzheimer y esquizofrenia. Cada gra´fico corresponde a una métrica, de tal forma que en el eje x se muestran los distintos pipelines y en el eje y los valores de la métrica correspondiente. Cada barra representa un modelo de clasificación diferente." + "Creamos gráficos de barras para comparar los resultados de los distintos métodos de clasificación en los conjuntos de test de Alzheimer y esquizofrenia. Cada gráfico corresponde a una métrica, de tal forma que en el eje x se muestran los distintos pipelines y en el eje y los valores de la métrica correspondiente. Cada barra representa un modelo de clasificación diferente.\n", + "\n", + "Estas gráficas no han sido incluidas en la memoria final." ], "metadata": { "collapsed": false @@ -531,11 +529,8 @@ " \"knn\": \"#ff6666\",\n", " \"decision_tree\": \"#ffd374\",\n", "}\n", - "\n", - "# Métricas a graficar\n", "metricas = [\"f1_class1\", \"f1_class0\", \"precision\", \"recall\", \"recall@100\", \"auc_roc\", \"TP\", \"TN\", \"FP\", \"FN\"]\n", "\n", - "# Diccionario de datos\n", "data = {\n", " \"alzheimer\": (\"Alzheimer\", df_alz),\n", " \"esquizofrenia\": (\"Esquizofrenia\", df_esq)\n", @@ -550,7 +545,6 @@ "execution_count": 4, "outputs": [], "source": [ - "# Crear carpeta base\n", "base_dir = \"../figures/test_comparison_by_disease\"\n", "os.makedirs(base_dir, exist_ok=True)" ], @@ -608,7 +602,6 @@ " xytext=(0, 5), textcoords=\"offset points\",\n", " ha='center', va='bottom', fontsize=8)\n", "\n", - " # Ajustar eje\n", " if metrica in [\"TP\", \"TN\", \"FP\", \"FN\"]:\n", " ax.set_ylim(0, global_max * 1.1)\n", " else:\n", @@ -642,7 +635,7 @@ { "cell_type": "markdown", "source": [ - "Se genera un gráfico de barras para cada una de las métricas del pipeline seleccionado, representando los resultados en los conjuntos de test de Alzheimer y esquizofrenia. En el eje x se muestran los distintos modelos evaluados." + "Se genera un gráfico de barras para cada una de las métricas del pipeline seleccionado, representando los resultados en los conjuntos de test de Alzheimer y esquizofrenia. En el eje x se muestran los distintos métodos evaluados." ], "metadata": { "collapsed": false @@ -791,7 +784,7 @@ { "cell_type": "markdown", "source": [ - "# 4. GRÁFICO DE BARRAS CON ERROR BARS CROSS VALIDATION" + "# 4 GRÁFICO DE BARRAS CON ERROR BAR EN CROSS VALIDATION" ], "metadata": { "collapsed": false @@ -800,7 +793,7 @@ { "cell_type": "markdown", "source": [ - "Para cada métrica definida, generamos un gráfico de barras agrupadas que compara el rendimiento de los distintos modelos para cada pipeline. Las barras incluyen el valor medio y la desviación estándar correspondiente." + "Para cada métrica definida, generamos un gráfico de barras agrupadas que compara el rendimiento de los distintos modelos para cada pipeline. Las barras incluyen la desviación estándar correspondiente (error bar)." ], "metadata": { "collapsed": false @@ -946,8 +939,6 @@ " ax.bar(posiciones, medios, yerr=stds, capsize=4,\n", " width=bar_width, label=modelo,\n", " color=colores.get(modelo, \"#bbbbbb\"))\n", - "\n", - " # Ajuste del eje Y para que siempre muestre desde 0 hasta un poco más del máximo\n", " lower = 0\n", " upper = min(1.05, global_max + 0.05)\n", " ax.set_ylim(lower, upper)\n", @@ -971,7 +962,7 @@ { "cell_type": "markdown", "source": [ - "# 5. Recall@k y Precision@k" + "# 5 Recall@k y Precision@k" ], "metadata": { "collapsed": false @@ -989,7 +980,7 @@ { "cell_type": "markdown", "source": [ - "Buscamos los csv donde se almacenan los valores de recall@k y precision@k para cada pipeline y cada uno de los modelos, con el fin de crear una única tabla que contenga todos los resultados integrados." + "Buscamos los CSV donde se almacenan los valores de recall@k y precision@k para cada pipeline y cada uno de los métodos, con el fin de crear una única tabla que contenga todos los resultados integrados." ], "metadata": { "collapsed": false @@ -1210,11 +1201,11 @@ "outputs": [], "source": [ "colores_modelos = {\n", - " \"xgboost\": \"#94c6e3\", # azul\n", - " \"random_forest\": \"#f58fd2\", # rosa\n", - " \"logistic_regression\": \"#9ea0fe\", # morado\n", - " \"knn\": \"#ff6666\", # rojo\n", - " \"decision_tree\": \"#ffd374\", # amarillo\n", + " \"xgboost\": \"#94c6e3\",\n", + " \"random_forest\": \"#f58fd2\",\n", + " \"logistic_regression\": \"#9ea0fe\",\n", + " \"knn\": \"#ff6666\",\n", + " \"decision_tree\": \"#ffd374\",\n", "}\n", "# Alzheimer\n", "plot_recall_by_pipeline(\n", @@ -1230,7 +1221,7 @@ " custom_colors=colores_modelos\n", ")\n", "\n", - "# Esquizofrenia (repite con df_k_total_esquizofrenia)\n", + "# Esquizofrenia\n", "plot_recall_by_pipeline(\n", " df_k_total_esquizofrenia,\n", " enfermedad=\"Esquizofrenia\",\n", @@ -1242,7 +1233,7 @@ " enfermedad=\"Esquizofrenia\",\n", " out_dir=\"../figures/precision@k/esquizofrenia\",\n", " custom_colors=colores_modelos\n", - ")\n" + ")" ], "metadata": { "collapsed": false @@ -1251,7 +1242,7 @@ { "cell_type": "markdown", "source": [ - "# 6. TABLA DE PREDICCIONES - RESULTADOS" + "# 6 TABLA DE PREDICCIONES - RESULTADOS" ], "metadata": { "collapsed": false @@ -1320,7 +1311,7 @@ { "cell_type": "markdown", "source": [ - "Analizamos los resultados del modelo XGBoost para ALzheimer, ya que este fue considerado el mejor modelo de clasificación para esta enfermedad." + "Analizamos los resultados del modelo XGBoost para ALzheimer, ya que este fue considerado el mejor método de clasificación para esta enfermedad." ], "metadata": { "collapsed": false @@ -1415,7 +1406,7 @@ { "cell_type": "markdown", "source": [ - "Analizamos los resultados del modelo de XGBoost para Esquizofrenia, ya que este fue considerado el mejor modelo de clasificación para esta enfermedad." + "Analizamos los resultados del modelo de XGBoost para Esquizofrenia, ya que este fue considerado el mejor método de clasificación para esta enfermedad." ], "metadata": { "collapsed": false @@ -1501,7 +1492,7 @@ { "cell_type": "markdown", "source": [ - "# 7. MATRIZ DE CONFUSIÓN" + "# 7 MATRIZ DE CONFUSIÓN" ], "metadata": { "collapsed": false @@ -1510,7 +1501,7 @@ { "cell_type": "markdown", "source": [ - "Realizamos las matrices de confusión correspondeintes al pipeline seleccionado para cada uno de los modelos de clasificación. Estas matrices se generan a partir de los valores de Verdaderos Negativos (TN), Falsos Positivos (FP), Falsos Negativos (FN) y Verdaderos Positivos (TP) obtenidos en el conjunto de test." + "Realizamos las matrices de confusión correspondeintes al pipeline seleccionado para cada uno de los métodos de clasificación. Estas matrices se generan a partir de los valores de Verdaderos Negativos (TN), Falsos Positivos (FP), Falsos Negativos (FN) y Verdaderos Positivos (TP) obtenidos en el conjunto de test." ], "metadata": { "collapsed": false @@ -1644,7 +1635,7 @@ { "cell_type": "markdown", "source": [ - "# 8. CURVA AUC-ROC" + "# 8 CURVA AUC-ROC" ], "metadata": { "collapsed": false