diff --git a/docs/Summary.org b/docs/Summary.org index df12650..b83f1d5 100644 --- a/docs/Summary.org +++ b/docs/Summary.org @@ -75,15 +75,14 @@ def parse_data(source, action): return test_data, target_data #+end_src -#+RESULTS: A continuación, mostraremos cada uno de los pasos que realizamos para obtener el /dataset/ final: -*** Valores nulos: +*** Valores nulos Nuestro /dataset/ contiene valores nulos, representados mediante un signo de interrogación (?). Optamos por evaluar 2 estrategias: -1. Eliminar los valores nulos +**** Eliminar los valores nulos #+BEGIN_SRC python df = read_csv(filepath_or_buffer="../data/mamografia.csv", na_values="?") @@ -94,7 +93,6 @@ print("DataFrame sin preprocesamiento: ") print(processed_df.describe()) #+END_SRC -#+RESULTS: #+begin_example DataFrame sin preprocesamiento: BI-RADS Age Margin Density @@ -120,7 +118,7 @@ max 6.000000 96.000000 5.000000 4.000000 Observamos que el número de instancias disminuye considerablemente, hasta un máximo de 112, en el caso del /BI-RADS/. Aún así, los valores de la media y desviación estándar no se ven afectados de forma considerable. -2. Imputar su valor con la media +**** Imputar su valor con la media #+BEGIN_SRC python df = read_csv(filepath_or_buffer="../data/mamografia.csv", na_values="?") @@ -131,7 +129,6 @@ print("DataFrame sin preprocesamiento: ") print(processed_df.describe()) #+END_SRC -#+RESULTS: #+begin_example DataFrame sin preprocesamiento: BI-RADS Age Margin Density @@ -156,3 +153,53 @@ max 6.000000 96.000000 5.000000 4.000000 #+end_example Esta alternativa nos permite mantener el número de instancias en todas las columnas, sin alterar la media ni la desviación típica. + +*** Valores no númericos + +La mayoría de algoritmos de aprendizaje automática trabaja con datos numéricos, desafortunadamente nuestro /dataset/ contiene dos columnas con datos descriptivos. + +Procedemos a convertirlos en valores numéricos mediante un /LabelEncoder/: + +#+begin_src python +encoded_df = encode_columns(df=processed_df) +print(encoded_df.head()) +#+end_src + +#+begin_example + BI-RADS Age Shape Margin Density Severity +0 5.0 67.0 1 5.0 3.000000 1 +1 4.0 43.0 4 1.0 2.910734 1 +2 5.0 58.0 0 5.0 3.000000 1 +3 4.0 28.0 4 1.0 3.000000 0 +4 5.0 74.0 4 5.0 2.910734 1 +#+end_example + +Vemos como las columnas *Shape* y *Severity* se componen ahora únicamente de valores numéricos. +*** Separación de datos + +Como último paso, separamos la columna objetivo de los demás datos. + +#+begin_src python +test_data, target_data = split_train_target(df=encoded_df) +print("Datos de entrenamiento: ") +print(test_data.head()) +print("Datos objetivo: ") +print(target_data.head()) +#+end_src + +#+begin_example +Datos de entrenamiento: + BI-RADS Age Shape Margin Density +0 5.0 67.0 1 5.0 3.000000 +1 4.0 43.0 4 1.0 2.910734 +2 5.0 58.0 0 5.0 3.000000 +3 4.0 28.0 4 1.0 3.000000 +4 5.0 74.0 4 5.0 2.910734 +Datos objetivo: +0 1 +1 1 +2 1 +3 0 +4 1 +Name: Severity, dtype: int64 +#+end_example diff --git a/docs/Summary.pdf b/docs/Summary.pdf index 8370335..9c22c93 100644 Binary files a/docs/Summary.pdf and b/docs/Summary.pdf differ