Parte 1 Preprocesado de Datos

1.1 Importar el Dataset

Exercise 1.1 No puedo importar el conjunto de datos. Dice que no se encuentra el archivo. ¿Qué tengo que hacer?

  • Python: Asegúrate de que en el Explorador de archivos, estés en la carpeta que contiene el archivo 'Data.csv' que deseas importar. Esta carpeta se denomina "Carpeta del directorio de trabajo".

  • R: Asegúrate de configurar la carpeta de directorio de trabajo correctamente como lo hacemos en la Lección y que esta carpeta de directorio de trabajo contiene el archivo 'Data.csv'.

Exercise 1.2 ¿Cuál es la diferencia entre las variables independientes y la variable dependiente?

Las variables independientes son los datos de entrada que tenemos, y cada una de ellas la queremos utilizar para predecir algo. Ese algo a predecir es la variable dependiente.

Exercise 1.3

En Python, ¿por qué creamos X e y por separado?

Porque queremos trabajar con matrices de Numpy, en lugar de data frames de Pandas. Los arrays de Numpy son el formato más conveniente para trabajar al realizar el preprocesamiento de datos y la creación de modelos de aprendizaje automático. Entonces creamos dos matrices separadas, una que contiene nuestras variables independientes (también llamadas características de entrada) y otra que contiene nuestra variable dependiente (lo que queremos predecir).

Exercise 1.4

En Python, ¿qué hace exactamente 'iloc'?

Localiza la columna por su índice, la posición que esta ocupa. En otras palabras, usar 'iloc' nos permite tomar columnas simplemente tomando su índice.

Exercise 1.5

En Python, ¿qué hace exactamente '.values'?

Devuelve los valores de las columnas que estamos tomando (por su índice) dentro de una matriz de Numpy. Así es básicamente como X e yse convierten en matrices de Numpy.

Exercise 1.6

En R, ¿por qué no tenemos que crear matrices o arrays?

Porque R funciona de manera muy diferente a Python. R contiene excelentes herramientas que permiten trabajar directa y fácilmente con data frames.

1.2 Datos Faltantes y NAs

Exercise 1.7

En Python, ¿cuál es la diferencia entre fit y transform?

La parte de fit se utiliza para extraer información de los datos sobre los que se aplica el objeto (aquí, Imputer detectará los valores faltantes y obtendrá la media de la columna). Luego, la parte de transform se usa para aplicar alguna transformación (aquí, Imputer reemplazará el valor faltante por la media).

Exercise 1.8 En R, ¿por qué usamos la función ave() cuando reemplazamos los valores faltantes por una media de la columna cuando podemos hacerlo mucho más simple de esta manera?

dataset$Age[is.na(dataset$Age)] = mean(dataset$Age, na.rm = T)

Usamos la función ave() con el parámetro FUN porque nos permite agregar algunas opciones en el cálculo de la media, como por ejemplo calcular la media de observaciones agrupadas por otra característica, o calcular la media de subconjuntos, etc. Esta función puede ser muy útil si deseamos ser más precisos al reemplazar los valores faltantes por la media.

Exercise 1.9 ¿Reemplazar por la media es la mejor estrategia para manejar los valores faltantes o NAs?

Es una buena estrategia pero no siempre la mejor. Depende de nuestro problema comercial, de la forma en que se distribuyen sus datos y del número de valores faltantes. Si, por ejemplo, tenemos muchos valores faltantes, la sustitución de medias no es lo mejor. Otras estrategias incluyen la imputación por la “mediana”, la imputación por el valor “más frecuente” o la imputación de predicción. La imputación de predicciones es en realidad otra gran estrategia que se recomienda, pero que no cubrimos en la Parte 1 porque es demasiado avanzada para hacerlo en la Parte 1. Esta estrategia de hecho requiere comprender la Parte 3: Clasificación. Entonces, si completas la Parte 3, esta es la estrategia que es incluso mejor que la imputación media: tomamos la columna de características que contiene los valores faltantes y establecemos esta columna de características como la variable dependiente, mientras establecemos las otras columnas como las variables independientes. Luego, dividimos nuestro conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba donde el conjunto de entrenamiento contiene todas las observaciones (las filas) donde la columna de características que acabamos de establecer como la variable dependiente no tiene ningún valor faltante y el conjunto de prueba contiene todas las observaciones donde la columna de la variable dependiente contiene los valores faltantes. Luego, realizamos un modelo de clasificación (uno bueno para esta situación es k-NN) para predecir los valores faltantes en el conjunto de prueba. Y finalmente reemplazamos los valores faltantes del conjunto de prueba por las predicciones. ¡Una gran estrategia!

1.3 Datos Categóricos

Exercise 1.10 En Python, ¿qué hacen los dos métodos 'fit_transform'?

Cuando se llama al método 'fit_transform()' desde la clase LabelEncoder(), transforma las categorías de formato string a formato de número entero Por ejemplo, transforma Francia, España y Alemania en 0, 1 y 2. Luego, cuando se llama al método 'fit_transform()' desde la clase OneHotEncoder(), crea columnas separadas para cada etiqueta diferente con valores binarios 0 y 1. Esas columnas separadas son las variables ficticias o variables dummy.

Exercise 1.11 En R, ¿por qué no creamos manualmente las variables ficticias como lo hacemos en Python?

Porque se crean automáticamente cuando se usa la función 'factor()' como lo hacemos en la Lección. Lo veremos visualmente al iniciar los problemas de regresión y la clasificación.

1.4 Dividir el conjunto de datos en el conjunto de entrenamiento y el conjunto de prueba

Exercise 1.12

¿Cuál es la diferencia entre el conjunto de entrenamiento y el conjunto de prueba?

El conjunto de entrenamiento es un subconjunto de nuestros datos en el que su modelo aprenderá a predecir la variable dependiente a partir de las variables independientes. El conjunto de prueba es el subconjunto complementario del conjunto de entrenamiento, en el que evaluará nuestro modelo para ver si logra predecir correctamente la variable dependiente utilizando para ello las variables independientes.

Exercise 1.13

¿Por qué dividimos el dataset utilizando el valor de la variable dependiente?

Porque queremos tener valores bien distribuidos de la variable dependiente en el conjunto de entrenamiento y prueba. Por ejemplo, si solo tuviéramos los mismos valores de la variable dependiente en el conjunto de entrenamiento que en el de prueba, nuestro modelo no podría aprender ninguna correlación entre las variables independientes y dependientes.

1.5 Escalado de Características

Exercise 1.14

¿Realmente tenemos que aplicar Escalado de Características en las variables dummy?

Sí, si deseas optimizar la precisión de las predicciones de tu modelo. No, si deseas mantener la mayor interpretación posible en tu modelo.

Exercise 1.15

¿Cuándo deberíamos utilizar la estandarización y la normalización?

Por lo general, debemos normalizar (normalización) cuando los datos se distribuyen normalmente, segun una campana de Gauss, y escalar (estandarizar) cuando los datos no se distribuyen normalmente. En caso de duda, debemos optar por la estandarización. Sin embargo, lo que se suele hacer es probar los dos métodos de escalado y evaluar así cual de los dos nos da el mejor resultado.