Hola, tras explorar un poco las posibilidades del modelo de regresión simple, nos disponemos a proceder con el modelo de regresión múltiple. Este modelo, ahora, incorporará o nos dará la posibilidad de añadir un número mucho mayor de variables explicativas y de cualquier naturaleza. Para empezar, no obstante, vamos a explorar un poco las herramientas de creación de nuevas variables, esto es, la etapa de "Feature Extraction". Vamos a ver cómo crear variables complementarias empleando herramientas simples a partir de las variables disponibles en la base de datos. En particular, vamos a empezar capturando la base de datos de la forma habitual, la base de datos llamada "bd5" contiene la información filtrada y procesada. Las herramientas para transformar las variables existentes son diversas. La primera de ellas, que consiste en generar variables "Dummy", consiste en aplicar la transformación "withColumn" a partir de una simple función indicadora. Esta herramienta de generar variables "Dummy", nos permite transformar variables que son de naturaleza categórica a variables que ahora serán de naturaleza, más bien, numérica. Numérica porque sus valores serán "cero" y "uno". Anteriormente, la variable Horario tenía valores "uno", "dos", "tres", "cuatro", si bien, "uno" "dos" "tres" "cuatro" sí son numéricos, el significado de estos valores no es en este orden. Los valores "uno", "dos", "tres", "cuatro" se correspondían a horario del vuelo nocturno, mañana, mediodía y tarde, por lo tanto, esto, es necesario transformarlo a variables indicadoras. Cada una de estas líneas transforma y crea la variable pertinente. La variable "Horario4" no es necesaria porque se puede deducir de las otras tres anteriores. De esta forma, tendríamos la posibilidad de incorporar variables categóricas y transformarlas a variables numéricas. Otra estrategia de trabajo consiste en generar variables dicotomizadas, variables binarias, a partir de variables originalmente numéricas. Por ejemplo, empleando la variable "DepDelay" podemos transformar y obtener una variable, también, indicadora de "ceros" y "unos" empleando tan solo un punto de corte, en este caso, el valor 15. Tras aplicar la transformación, en esta línea se define la transformación, en esta línea se ejecuta la transformación y se visualizan los resultados. De forma similar, visualizamos todos los resultados de algunos casos. Veríamos que la variable generada contiene valores cero y uno respetando el punto de corte especificado en la transformación. Otra estrategia para discretizar variables cuantitativas, generando una variable que también será numérica pero cuyos valores serán discretos, consiste en aplicar una serie de puntos de corte a la variable original. Si bien, antes sólo empleábamos un punto de corte, en este caso, empleamos y definimos intervalos para generar valores discretos. En este caso, valores menores que "cero" serán asignados al valor "cero", valores entre "cero" y 15, el valor "uno", y valores más grandes de 15, el valor "dos". De esta forma, tenemos una variable originalmente numérica transformada, ahora, en valores discretos. Otra estrategia de trabajo consiste en generar la expansión polinómica de distintas variables. Esto se refiere a obtener términos cuadráticos y productos de variables numéricas. Esta transformación requiere empaquetar, si queréis, una serie de variables de interés en vector. Esta columna es un vector que contiene estas dos columnas inicialmente disponibles en la base de datos, de forma que aplicamos la expansión polinómica a la columna vectorizada de "features". En este caso, definimos una transformación de grado "dos" generando términos cuadráticos y productos de las columnas contenidas en "features", dando lugar a un nuevo vector de columnas que se va a llamar "Polyn". La aplicación de toda esta transformación, la expansión polinómica y la generación del vector de "features", se generará y se aplicará en esta nueva base de datos "bd6". Se puede mostrar el resultado a partir de una selección de las columnas de interés y visualizando una serie de datos. Vemos que las variables originales, "DepDelay" y "Distance", que formaban parte de las variables de interés, aparecen aquí y aquí como términos de la expansión polinómica. Aquí tendríamos las variables originales, el valor cuadrático de la primera componente, el valor cuadrático de la segunda componente y el producto de ambas componentes. De esta forma, tendríamos un nuevo vector obtenido a partir de la expansión polinómica. Claro, este proceso puede generar un número elevado de variables si tenemos aquí un número relativamente grande también de componentes. Otra transformación que puede ser de interés, que será necesaria en videos posteriores, consiste en la estandarización de las columnas. Para estandarizar, es decir, para centrar y dividir por la desviación estándar de forma que se obtengan nuevas variables con media "cero" y desviación estándar "uno", se requiere también una columna de "features". El resultado se almacenará en una nueva columna de "features" con un nombre distinto. En la definición de la transformación se puede indicar si se desea estandarizar dividiendo por la desviación estándar, y si se desea estandarizar, también, centrando la variable. En este caso, se aplica la transformación, se define el modelo y se aplica la transformación generando valores en esta nueva instrucción. Finalmente, se puede mostrar el resultado a partir de la selección de las columnas y el método "show". Otra estrategia para transformar variables, obviamente, consiste en una transformación directa empleando la herramienta "withColumn". Esto permite aplicar una transformación generando una nueva columna de forma directa. Hasta aquí, las herramientas necesarias para la gestión y la creación de nuevas variables, la etapa llamada de "Feature Extraction".