Menu iconMenu icon
Aprendizaje automático con Python

Capítulo 3: Preprocesamiento de Datos

3.2 Ingeniería de Características

Bienvenidos al estudio de arte de nuestro viaje de aprendizaje automático: la Ingeniería de Características. Aquí, nosotros como artistas de datos practicamos el arte de la ingeniería de características para mejorar el rendimiento de nuestros modelos de aprendizaje automático. Este es un paso crucial en el proceso de aprendizaje automático, ya que puede tener un gran impacto en la precisión de las predicciones finales. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas.

En la ingeniería de características, tenemos muchas técnicas a nuestra disposición. Podemos crear características de interacción, que son combinaciones de dos o más características existentes que pueden revelar nuevas perspicacias. También podemos crear características polinómicas, que implican elevar las características existentes a una potencia para capturar relaciones no lineales. Además, podemos usar la agrupación (binning) para agrupar características numéricas continuas en categorías discretas, lo que puede ser útil para ciertos tipos de modelos. Estos son solo algunos ejemplos de las muchas técnicas disponibles.

Dominando el arte de la ingeniería de características, podemos liberar todo el potencial de nuestros modelos de aprendizaje automático y crear predicciones verdaderamente poderosas y precisas. Así que profundicemos más en el mundo de la ingeniería de características y exploremos estas técnicas con más detalle.

3.2.1 Creación de Características de Interacción

Las características de interacción son una herramienta poderosa utilizada para mejorar los modelos de aprendizaje automático. Se crean combinando características existentes para capturar la relación entre ellas. Al hacerlo, las características de interacción pueden ayudar a identificar patrones y correlaciones importantes que pueden no ser evidentes de inmediato al mirar las características individuales de forma aislada. En el ejemplo proporcionado, se crea la característica de interacción 'área' multiplicando las características 'altura' y 'ancho'. Al hacerlo, podemos capturar la relación entre las dos características y obtener una mejor comprensión de cómo interactúan entre sí. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa sobre los datos subyacentes.

Además de las características de interacción, la ingeniería de características también implica la creación de características polinómicas. Las características polinómicas implican elevar las características existentes a una potencia para capturar relaciones no lineales. Esto es particularmente útil cuando se trabaja con conjuntos de datos complejos donde las relaciones entre las características no son necesariamente lineales. Al crear características polinómicas, podemos capturar estas relaciones no lineales y mejorar la precisión de nuestros modelos.

Otro aspecto importante de la ingeniería de características es la agrupación (binning). La agrupación consiste en transformar variables numéricas continuas en categorías discretas o "bins". Esta técnica es útil cuando se trabaja con conjuntos de datos que tienen un gran número de variables continuas, como la edad o el ingreso. Al agrupar las variables en categorías discretas, podemos simplificar el conjunto de datos y facilitar su manejo.

La ingeniería de características es un paso esencial en el proceso de aprendizaje automático. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa que se puede utilizar para tomar decisiones informadas.

Ejemplo:

Así es cómo podemos crear características de interacción utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Create a new interaction feature 'area'
df['area'] = df['height'] * df['width']

print(df)

Salida:

height  width  area
0     5.00   3.50  17.50
1     6.10   3.00  18.30
2     5.60   3.20  17.92
3     5.80   3.70  21.46
4     6.00   3.30  19.80

El código primero importa el módulo pandas como pd. Luego, el código crea un DataFrame llamado df con las columnas height y width. A continuación, el código crea una nueva característica de interacción llamada area multiplicando las columnas height y width. Finalmente, el código imprime el DataFrame.

La salida muestra que se ha creado la nueva característica de interacción area. Los valores en la columna area son el producto de los valores correspondientes en las columnas height y width.

3.2.2 Creación de Características Polinómicas

Las características polinómicas son un concepto importante en el aprendizaje automático. Se crean elevando las características existentes a un exponente, lo que puede ayudar a capturar relaciones más complejas entre las características y la variable objetivo.

Por ejemplo, si tenemos una característica 'x', podríamos crear una nueva característica 'x^2' elevando al cuadrado 'x'. Esto puede ser útil en casos donde la relación entre la característica y la variable objetivo no es lineal, ya que los términos polinómicos de orden superior pueden capturar mejor la no linealidad.

Las características polinómicas pueden ayudar a reducir el subajuste (underfitting), que ocurre cuando el modelo es demasiado simple para capturar la complejidad de los datos. Al incluir características polinómicas, podemos crear un modelo más flexible que sea mejor para ajustarse a los datos.

Sin embargo, es importante tener precaución al usar características polinómicas, ya que incluir demasiadas puede llevar al sobreajuste (overfitting), donde el modelo se vuelve demasiado complejo y se ajusta al ruido en los datos en lugar de a los patrones subyacentes.

Ejemplo:

Scikit-learn proporciona una función PolynomialFeatures para crear características polinómicas:

import pandas as pd
from sklearn.preprocessing import PolynomialFeatures

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Extract numerical features from the DataFrame
X = df[['height', 'width']]

# Create a PolynomialFeatures object
poly = PolynomialFeatures(2)

# Create polynomial features
df_poly = poly.fit_transform(X)

print(df_poly)

Salida:

height  width  height^2  width^2  height*width
0     5.00   3.50       25.00  12.25  17.50
1     6.10   3.00       37.21  9.00  18.30
2     5.60   3.20       31.36  10.24  17.92
3     5.80   3.70       32.49  13.69  21.46
4     6.00   3.30       36.00  10.89  19.80

El código primero importa el módulo sklearn.preprocessing como poly. Luego, el código crea un objeto PolynomialFeatures con un grado de 2. A continuación, el código crea un DataFrame llamado df con las columnas height y width y los valores [5.0, 6.1, 5.6, 5.8, 6.0] y [3.5, 3.0, 3.2, 3.7, 3.3] respectivamente. Luego, el código crea características polinómicas utilizando el objeto PolynomialFeatures y asigna los resultados al DataFrame df_poly. Finalmente, el código imprime el DataFrame.

La salida muestra que las columnas height y width se han convertido en características polinómicas de grado 2. Las nuevas columnas se llaman height^2width^2, y height*width.

3.2.3 Agrupación (Binning)

La agrupación es un proceso importante en el análisis de datos en el que las variables numéricas continuas se transforman en categorías discretas o "bins". El proceso de agrupación permite a los analistas simplificar datos numéricos complejos y facilitar su comprensión. Al dividir una característica continua como 'edad' en categorías como 'niño', 'adolescente', 'adulto' y 'anciano', podemos obtener una comprensión más matizada de los datos.

Por ejemplo, podemos comparar el número de niños y adolescentes en una población, o el número de personas mayores en diferentes regiones. De esta manera, la agrupación puede ayudarnos a identificar patrones o tendencias en los datos que de otra manera podrían no ser evidentes. La agrupación también puede ser útil para detectar valores atípicos y manejar datos faltantes.

En general, la agrupación es una técnica poderosa que puede ayudarnos a dar sentido a datos numéricos complejos y sacar conclusiones significativas de ellos. Es importante tener en cuenta que si bien la agrupación puede ser una herramienta valiosa en el análisis de datos, no está exenta de limitaciones.

Por lo tanto, es importante considerar cuidadosamente el contexto y el propósito del análisis de datos antes de decidir utilizar la agrupación como técnica.

Ejemplo:

Así es como podemos realizar la agrupación utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'age': [5, 15, 25, 35, 45, 55]
})

# Define bins
bins = [0, 18, 35, 60, 100]

# Define labels
labels = ['child', 'young adult', 'adult', 'senior']

# Perform binning
df['age_group'] = pd.cut(df['age'], bins=bins, labels=labels)

print(df)

Salida:

age  age_group
0    5     child
1   15  young adult
2   25    adult
3   35    adult
4   45    adult
5   55  senior

El código primero crea un DataFrame llamado df con la columna age y los valores [5, 15, 25, 35, 45, 55]. A continuación, el código define los bins y etiquetas para la operación de agrupación. Luego, realiza la operación de agrupación y asigna los resultados a la columna age_group. Finalmente, el código imprime el DataFrame.

La salida muestra que la columna age se ha agrupado en cuatro grupos: niñoadulto jovenadulto y anciano. Los valores en la columna age_group son las etiquetas para los bins correspondientes.

3.2.4 Escalado de Características

El escalado de características es una técnica crucial de preprocesamiento de datos utilizada en el aprendizaje automático. Estandariza el rango de variables independientes o características de los datos, lo que facilita que los algoritmos de aprendizaje automático analicen los datos y produzcan resultados más precisos. Sin el escalado de características, el rendimiento de los algoritmos de aprendizaje automático puede verse afectado, ya que dependen del rango de variables de entrada para tomar decisiones.

Existen varias formas de realizar el escalado de características, pero nos centraremos en dos métodos populares: normalización y estandarización. La normalización escala los datos a un rango de 0 a 1, mientras que la estandarización escala los datos para que tengan una media de 0 y una desviación estándar de 1. Ambos métodos tienen sus ventajas y desventajas, y la elección del método a utilizar depende de los requisitos específicos del modelo de aprendizaje automático y las características de los datos que se están analizando.

Normalización

La normalización es una técnica de escalado importante que a menudo se utiliza en el análisis de datos. Esta técnica se puede utilizar para cambiar los valores de las columnas numéricas en un conjunto de datos para usar una escala común. Al hacerlo, la normalización puede ayudar a asegurarse de que los datos sean más fácilmente comparables y se puedan analizar de manera más efectiva. La normalización puede ayudar a asegurarse de que no se pierdan diferencias importantes en los rangos de valores durante el proceso de escalado.

Esto es especialmente importante para conjuntos de datos que contienen una amplia gama de valores. Por lo general, la normalización escala la variable para que esté entre 0 y 1, lo que puede ser útil en una variedad de contextos diferentes. En general, la normalización es una herramienta esencial para cualquier analista de datos o investigador que trabaje con conjuntos de datos complejos y quiera asegurarse de que sus resultados sean precisos y fiables.

Ejemplo:

Así es como puede realizar la normalización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a MinMaxScaler
scaler = MinMaxScaler()

# Perform normalization
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_normalized)

Salida:

A  B
0  0.0  0.0
1  0.25  0.5
2  0.50  1.0
3  0.75  1.5
4  1.00  2.0

El código primero importa el módulo sklearn.preprocessing y crea un objeto MinMaxScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la normalización utilizando el objeto MinMaxScaler y asigna los resultados al DataFrame df_normalized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han normalizado al rango [0, 1].

Estandarización

La estandarización es una técnica de escalado popular en el análisis de datos. Este método ajusta los valores de un atributo o característica en un conjunto de datos para que tengan una media de cero y una desviación estándar de uno. El resultado de esta técnica es una distribución normalizada de valores.

El uso más común de la estandarización es comparar diferentes características en un conjunto de datos que tienen diferentes escalas de medición. Al estandarizarlos, puede comparar fácilmente su importancia relativa. La estandarización también es útil para preparar datos para algoritmos de aprendizaje automático.

Estos algoritmos generalmente funcionan mejor con datos estandarizados porque asumen que los datos siguen una distribución normal estándar. Por lo tanto, la estandarización puede mejorar la precisión de los modelos de aprendizaje automático y hacerlos más robustos ante valores atípicos y datos ruidosos.

Ejemplo:

Así es como puede realizar la estandarización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import StandardScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a StandardScaler
scaler = StandardScaler()

# Perform standardization
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_standardized)

Salida:

A  B
0 -2.236068  0.000000
1 -1.118034  1.000000
2  0.000000  2.000000
3  1.118034  3.000000
4  2.236068  4.000000

El código primero importa el módulo sklearn.preprocessing y crea un objeto StandardScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la estandarización utilizando el objeto StandardScaler y asigna los resultados al DataFrame df_standardized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han estandarizado para tener una media de 0 y una desviación estándar de 1.

3.2 Ingeniería de Características

Bienvenidos al estudio de arte de nuestro viaje de aprendizaje automático: la Ingeniería de Características. Aquí, nosotros como artistas de datos practicamos el arte de la ingeniería de características para mejorar el rendimiento de nuestros modelos de aprendizaje automático. Este es un paso crucial en el proceso de aprendizaje automático, ya que puede tener un gran impacto en la precisión de las predicciones finales. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas.

En la ingeniería de características, tenemos muchas técnicas a nuestra disposición. Podemos crear características de interacción, que son combinaciones de dos o más características existentes que pueden revelar nuevas perspicacias. También podemos crear características polinómicas, que implican elevar las características existentes a una potencia para capturar relaciones no lineales. Además, podemos usar la agrupación (binning) para agrupar características numéricas continuas en categorías discretas, lo que puede ser útil para ciertos tipos de modelos. Estos son solo algunos ejemplos de las muchas técnicas disponibles.

Dominando el arte de la ingeniería de características, podemos liberar todo el potencial de nuestros modelos de aprendizaje automático y crear predicciones verdaderamente poderosas y precisas. Así que profundicemos más en el mundo de la ingeniería de características y exploremos estas técnicas con más detalle.

3.2.1 Creación de Características de Interacción

Las características de interacción son una herramienta poderosa utilizada para mejorar los modelos de aprendizaje automático. Se crean combinando características existentes para capturar la relación entre ellas. Al hacerlo, las características de interacción pueden ayudar a identificar patrones y correlaciones importantes que pueden no ser evidentes de inmediato al mirar las características individuales de forma aislada. En el ejemplo proporcionado, se crea la característica de interacción 'área' multiplicando las características 'altura' y 'ancho'. Al hacerlo, podemos capturar la relación entre las dos características y obtener una mejor comprensión de cómo interactúan entre sí. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa sobre los datos subyacentes.

Además de las características de interacción, la ingeniería de características también implica la creación de características polinómicas. Las características polinómicas implican elevar las características existentes a una potencia para capturar relaciones no lineales. Esto es particularmente útil cuando se trabaja con conjuntos de datos complejos donde las relaciones entre las características no son necesariamente lineales. Al crear características polinómicas, podemos capturar estas relaciones no lineales y mejorar la precisión de nuestros modelos.

Otro aspecto importante de la ingeniería de características es la agrupación (binning). La agrupación consiste en transformar variables numéricas continuas en categorías discretas o "bins". Esta técnica es útil cuando se trabaja con conjuntos de datos que tienen un gran número de variables continuas, como la edad o el ingreso. Al agrupar las variables en categorías discretas, podemos simplificar el conjunto de datos y facilitar su manejo.

La ingeniería de características es un paso esencial en el proceso de aprendizaje automático. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa que se puede utilizar para tomar decisiones informadas.

Ejemplo:

Así es cómo podemos crear características de interacción utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Create a new interaction feature 'area'
df['area'] = df['height'] * df['width']

print(df)

Salida:

height  width  area
0     5.00   3.50  17.50
1     6.10   3.00  18.30
2     5.60   3.20  17.92
3     5.80   3.70  21.46
4     6.00   3.30  19.80

El código primero importa el módulo pandas como pd. Luego, el código crea un DataFrame llamado df con las columnas height y width. A continuación, el código crea una nueva característica de interacción llamada area multiplicando las columnas height y width. Finalmente, el código imprime el DataFrame.

La salida muestra que se ha creado la nueva característica de interacción area. Los valores en la columna area son el producto de los valores correspondientes en las columnas height y width.

3.2.2 Creación de Características Polinómicas

Las características polinómicas son un concepto importante en el aprendizaje automático. Se crean elevando las características existentes a un exponente, lo que puede ayudar a capturar relaciones más complejas entre las características y la variable objetivo.

Por ejemplo, si tenemos una característica 'x', podríamos crear una nueva característica 'x^2' elevando al cuadrado 'x'. Esto puede ser útil en casos donde la relación entre la característica y la variable objetivo no es lineal, ya que los términos polinómicos de orden superior pueden capturar mejor la no linealidad.

Las características polinómicas pueden ayudar a reducir el subajuste (underfitting), que ocurre cuando el modelo es demasiado simple para capturar la complejidad de los datos. Al incluir características polinómicas, podemos crear un modelo más flexible que sea mejor para ajustarse a los datos.

Sin embargo, es importante tener precaución al usar características polinómicas, ya que incluir demasiadas puede llevar al sobreajuste (overfitting), donde el modelo se vuelve demasiado complejo y se ajusta al ruido en los datos en lugar de a los patrones subyacentes.

Ejemplo:

Scikit-learn proporciona una función PolynomialFeatures para crear características polinómicas:

import pandas as pd
from sklearn.preprocessing import PolynomialFeatures

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Extract numerical features from the DataFrame
X = df[['height', 'width']]

# Create a PolynomialFeatures object
poly = PolynomialFeatures(2)

# Create polynomial features
df_poly = poly.fit_transform(X)

print(df_poly)

Salida:

height  width  height^2  width^2  height*width
0     5.00   3.50       25.00  12.25  17.50
1     6.10   3.00       37.21  9.00  18.30
2     5.60   3.20       31.36  10.24  17.92
3     5.80   3.70       32.49  13.69  21.46
4     6.00   3.30       36.00  10.89  19.80

El código primero importa el módulo sklearn.preprocessing como poly. Luego, el código crea un objeto PolynomialFeatures con un grado de 2. A continuación, el código crea un DataFrame llamado df con las columnas height y width y los valores [5.0, 6.1, 5.6, 5.8, 6.0] y [3.5, 3.0, 3.2, 3.7, 3.3] respectivamente. Luego, el código crea características polinómicas utilizando el objeto PolynomialFeatures y asigna los resultados al DataFrame df_poly. Finalmente, el código imprime el DataFrame.

La salida muestra que las columnas height y width se han convertido en características polinómicas de grado 2. Las nuevas columnas se llaman height^2width^2, y height*width.

3.2.3 Agrupación (Binning)

La agrupación es un proceso importante en el análisis de datos en el que las variables numéricas continuas se transforman en categorías discretas o "bins". El proceso de agrupación permite a los analistas simplificar datos numéricos complejos y facilitar su comprensión. Al dividir una característica continua como 'edad' en categorías como 'niño', 'adolescente', 'adulto' y 'anciano', podemos obtener una comprensión más matizada de los datos.

Por ejemplo, podemos comparar el número de niños y adolescentes en una población, o el número de personas mayores en diferentes regiones. De esta manera, la agrupación puede ayudarnos a identificar patrones o tendencias en los datos que de otra manera podrían no ser evidentes. La agrupación también puede ser útil para detectar valores atípicos y manejar datos faltantes.

En general, la agrupación es una técnica poderosa que puede ayudarnos a dar sentido a datos numéricos complejos y sacar conclusiones significativas de ellos. Es importante tener en cuenta que si bien la agrupación puede ser una herramienta valiosa en el análisis de datos, no está exenta de limitaciones.

Por lo tanto, es importante considerar cuidadosamente el contexto y el propósito del análisis de datos antes de decidir utilizar la agrupación como técnica.

Ejemplo:

Así es como podemos realizar la agrupación utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'age': [5, 15, 25, 35, 45, 55]
})

# Define bins
bins = [0, 18, 35, 60, 100]

# Define labels
labels = ['child', 'young adult', 'adult', 'senior']

# Perform binning
df['age_group'] = pd.cut(df['age'], bins=bins, labels=labels)

print(df)

Salida:

age  age_group
0    5     child
1   15  young adult
2   25    adult
3   35    adult
4   45    adult
5   55  senior

El código primero crea un DataFrame llamado df con la columna age y los valores [5, 15, 25, 35, 45, 55]. A continuación, el código define los bins y etiquetas para la operación de agrupación. Luego, realiza la operación de agrupación y asigna los resultados a la columna age_group. Finalmente, el código imprime el DataFrame.

La salida muestra que la columna age se ha agrupado en cuatro grupos: niñoadulto jovenadulto y anciano. Los valores en la columna age_group son las etiquetas para los bins correspondientes.

3.2.4 Escalado de Características

El escalado de características es una técnica crucial de preprocesamiento de datos utilizada en el aprendizaje automático. Estandariza el rango de variables independientes o características de los datos, lo que facilita que los algoritmos de aprendizaje automático analicen los datos y produzcan resultados más precisos. Sin el escalado de características, el rendimiento de los algoritmos de aprendizaje automático puede verse afectado, ya que dependen del rango de variables de entrada para tomar decisiones.

Existen varias formas de realizar el escalado de características, pero nos centraremos en dos métodos populares: normalización y estandarización. La normalización escala los datos a un rango de 0 a 1, mientras que la estandarización escala los datos para que tengan una media de 0 y una desviación estándar de 1. Ambos métodos tienen sus ventajas y desventajas, y la elección del método a utilizar depende de los requisitos específicos del modelo de aprendizaje automático y las características de los datos que se están analizando.

Normalización

La normalización es una técnica de escalado importante que a menudo se utiliza en el análisis de datos. Esta técnica se puede utilizar para cambiar los valores de las columnas numéricas en un conjunto de datos para usar una escala común. Al hacerlo, la normalización puede ayudar a asegurarse de que los datos sean más fácilmente comparables y se puedan analizar de manera más efectiva. La normalización puede ayudar a asegurarse de que no se pierdan diferencias importantes en los rangos de valores durante el proceso de escalado.

Esto es especialmente importante para conjuntos de datos que contienen una amplia gama de valores. Por lo general, la normalización escala la variable para que esté entre 0 y 1, lo que puede ser útil en una variedad de contextos diferentes. En general, la normalización es una herramienta esencial para cualquier analista de datos o investigador que trabaje con conjuntos de datos complejos y quiera asegurarse de que sus resultados sean precisos y fiables.

Ejemplo:

Así es como puede realizar la normalización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a MinMaxScaler
scaler = MinMaxScaler()

# Perform normalization
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_normalized)

Salida:

A  B
0  0.0  0.0
1  0.25  0.5
2  0.50  1.0
3  0.75  1.5
4  1.00  2.0

El código primero importa el módulo sklearn.preprocessing y crea un objeto MinMaxScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la normalización utilizando el objeto MinMaxScaler y asigna los resultados al DataFrame df_normalized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han normalizado al rango [0, 1].

Estandarización

La estandarización es una técnica de escalado popular en el análisis de datos. Este método ajusta los valores de un atributo o característica en un conjunto de datos para que tengan una media de cero y una desviación estándar de uno. El resultado de esta técnica es una distribución normalizada de valores.

El uso más común de la estandarización es comparar diferentes características en un conjunto de datos que tienen diferentes escalas de medición. Al estandarizarlos, puede comparar fácilmente su importancia relativa. La estandarización también es útil para preparar datos para algoritmos de aprendizaje automático.

Estos algoritmos generalmente funcionan mejor con datos estandarizados porque asumen que los datos siguen una distribución normal estándar. Por lo tanto, la estandarización puede mejorar la precisión de los modelos de aprendizaje automático y hacerlos más robustos ante valores atípicos y datos ruidosos.

Ejemplo:

Así es como puede realizar la estandarización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import StandardScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a StandardScaler
scaler = StandardScaler()

# Perform standardization
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_standardized)

Salida:

A  B
0 -2.236068  0.000000
1 -1.118034  1.000000
2  0.000000  2.000000
3  1.118034  3.000000
4  2.236068  4.000000

El código primero importa el módulo sklearn.preprocessing y crea un objeto StandardScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la estandarización utilizando el objeto StandardScaler y asigna los resultados al DataFrame df_standardized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han estandarizado para tener una media de 0 y una desviación estándar de 1.

3.2 Ingeniería de Características

Bienvenidos al estudio de arte de nuestro viaje de aprendizaje automático: la Ingeniería de Características. Aquí, nosotros como artistas de datos practicamos el arte de la ingeniería de características para mejorar el rendimiento de nuestros modelos de aprendizaje automático. Este es un paso crucial en el proceso de aprendizaje automático, ya que puede tener un gran impacto en la precisión de las predicciones finales. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas.

En la ingeniería de características, tenemos muchas técnicas a nuestra disposición. Podemos crear características de interacción, que son combinaciones de dos o más características existentes que pueden revelar nuevas perspicacias. También podemos crear características polinómicas, que implican elevar las características existentes a una potencia para capturar relaciones no lineales. Además, podemos usar la agrupación (binning) para agrupar características numéricas continuas en categorías discretas, lo que puede ser útil para ciertos tipos de modelos. Estos son solo algunos ejemplos de las muchas técnicas disponibles.

Dominando el arte de la ingeniería de características, podemos liberar todo el potencial de nuestros modelos de aprendizaje automático y crear predicciones verdaderamente poderosas y precisas. Así que profundicemos más en el mundo de la ingeniería de características y exploremos estas técnicas con más detalle.

3.2.1 Creación de Características de Interacción

Las características de interacción son una herramienta poderosa utilizada para mejorar los modelos de aprendizaje automático. Se crean combinando características existentes para capturar la relación entre ellas. Al hacerlo, las características de interacción pueden ayudar a identificar patrones y correlaciones importantes que pueden no ser evidentes de inmediato al mirar las características individuales de forma aislada. En el ejemplo proporcionado, se crea la característica de interacción 'área' multiplicando las características 'altura' y 'ancho'. Al hacerlo, podemos capturar la relación entre las dos características y obtener una mejor comprensión de cómo interactúan entre sí. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa sobre los datos subyacentes.

Además de las características de interacción, la ingeniería de características también implica la creación de características polinómicas. Las características polinómicas implican elevar las características existentes a una potencia para capturar relaciones no lineales. Esto es particularmente útil cuando se trabaja con conjuntos de datos complejos donde las relaciones entre las características no son necesariamente lineales. Al crear características polinómicas, podemos capturar estas relaciones no lineales y mejorar la precisión de nuestros modelos.

Otro aspecto importante de la ingeniería de características es la agrupación (binning). La agrupación consiste en transformar variables numéricas continuas en categorías discretas o "bins". Esta técnica es útil cuando se trabaja con conjuntos de datos que tienen un gran número de variables continuas, como la edad o el ingreso. Al agrupar las variables en categorías discretas, podemos simplificar el conjunto de datos y facilitar su manejo.

La ingeniería de características es un paso esencial en el proceso de aprendizaje automático. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa que se puede utilizar para tomar decisiones informadas.

Ejemplo:

Así es cómo podemos crear características de interacción utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Create a new interaction feature 'area'
df['area'] = df['height'] * df['width']

print(df)

Salida:

height  width  area
0     5.00   3.50  17.50
1     6.10   3.00  18.30
2     5.60   3.20  17.92
3     5.80   3.70  21.46
4     6.00   3.30  19.80

El código primero importa el módulo pandas como pd. Luego, el código crea un DataFrame llamado df con las columnas height y width. A continuación, el código crea una nueva característica de interacción llamada area multiplicando las columnas height y width. Finalmente, el código imprime el DataFrame.

La salida muestra que se ha creado la nueva característica de interacción area. Los valores en la columna area son el producto de los valores correspondientes en las columnas height y width.

3.2.2 Creación de Características Polinómicas

Las características polinómicas son un concepto importante en el aprendizaje automático. Se crean elevando las características existentes a un exponente, lo que puede ayudar a capturar relaciones más complejas entre las características y la variable objetivo.

Por ejemplo, si tenemos una característica 'x', podríamos crear una nueva característica 'x^2' elevando al cuadrado 'x'. Esto puede ser útil en casos donde la relación entre la característica y la variable objetivo no es lineal, ya que los términos polinómicos de orden superior pueden capturar mejor la no linealidad.

Las características polinómicas pueden ayudar a reducir el subajuste (underfitting), que ocurre cuando el modelo es demasiado simple para capturar la complejidad de los datos. Al incluir características polinómicas, podemos crear un modelo más flexible que sea mejor para ajustarse a los datos.

Sin embargo, es importante tener precaución al usar características polinómicas, ya que incluir demasiadas puede llevar al sobreajuste (overfitting), donde el modelo se vuelve demasiado complejo y se ajusta al ruido en los datos en lugar de a los patrones subyacentes.

Ejemplo:

Scikit-learn proporciona una función PolynomialFeatures para crear características polinómicas:

import pandas as pd
from sklearn.preprocessing import PolynomialFeatures

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Extract numerical features from the DataFrame
X = df[['height', 'width']]

# Create a PolynomialFeatures object
poly = PolynomialFeatures(2)

# Create polynomial features
df_poly = poly.fit_transform(X)

print(df_poly)

Salida:

height  width  height^2  width^2  height*width
0     5.00   3.50       25.00  12.25  17.50
1     6.10   3.00       37.21  9.00  18.30
2     5.60   3.20       31.36  10.24  17.92
3     5.80   3.70       32.49  13.69  21.46
4     6.00   3.30       36.00  10.89  19.80

El código primero importa el módulo sklearn.preprocessing como poly. Luego, el código crea un objeto PolynomialFeatures con un grado de 2. A continuación, el código crea un DataFrame llamado df con las columnas height y width y los valores [5.0, 6.1, 5.6, 5.8, 6.0] y [3.5, 3.0, 3.2, 3.7, 3.3] respectivamente. Luego, el código crea características polinómicas utilizando el objeto PolynomialFeatures y asigna los resultados al DataFrame df_poly. Finalmente, el código imprime el DataFrame.

La salida muestra que las columnas height y width se han convertido en características polinómicas de grado 2. Las nuevas columnas se llaman height^2width^2, y height*width.

3.2.3 Agrupación (Binning)

La agrupación es un proceso importante en el análisis de datos en el que las variables numéricas continuas se transforman en categorías discretas o "bins". El proceso de agrupación permite a los analistas simplificar datos numéricos complejos y facilitar su comprensión. Al dividir una característica continua como 'edad' en categorías como 'niño', 'adolescente', 'adulto' y 'anciano', podemos obtener una comprensión más matizada de los datos.

Por ejemplo, podemos comparar el número de niños y adolescentes en una población, o el número de personas mayores en diferentes regiones. De esta manera, la agrupación puede ayudarnos a identificar patrones o tendencias en los datos que de otra manera podrían no ser evidentes. La agrupación también puede ser útil para detectar valores atípicos y manejar datos faltantes.

En general, la agrupación es una técnica poderosa que puede ayudarnos a dar sentido a datos numéricos complejos y sacar conclusiones significativas de ellos. Es importante tener en cuenta que si bien la agrupación puede ser una herramienta valiosa en el análisis de datos, no está exenta de limitaciones.

Por lo tanto, es importante considerar cuidadosamente el contexto y el propósito del análisis de datos antes de decidir utilizar la agrupación como técnica.

Ejemplo:

Así es como podemos realizar la agrupación utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'age': [5, 15, 25, 35, 45, 55]
})

# Define bins
bins = [0, 18, 35, 60, 100]

# Define labels
labels = ['child', 'young adult', 'adult', 'senior']

# Perform binning
df['age_group'] = pd.cut(df['age'], bins=bins, labels=labels)

print(df)

Salida:

age  age_group
0    5     child
1   15  young adult
2   25    adult
3   35    adult
4   45    adult
5   55  senior

El código primero crea un DataFrame llamado df con la columna age y los valores [5, 15, 25, 35, 45, 55]. A continuación, el código define los bins y etiquetas para la operación de agrupación. Luego, realiza la operación de agrupación y asigna los resultados a la columna age_group. Finalmente, el código imprime el DataFrame.

La salida muestra que la columna age se ha agrupado en cuatro grupos: niñoadulto jovenadulto y anciano. Los valores en la columna age_group son las etiquetas para los bins correspondientes.

3.2.4 Escalado de Características

El escalado de características es una técnica crucial de preprocesamiento de datos utilizada en el aprendizaje automático. Estandariza el rango de variables independientes o características de los datos, lo que facilita que los algoritmos de aprendizaje automático analicen los datos y produzcan resultados más precisos. Sin el escalado de características, el rendimiento de los algoritmos de aprendizaje automático puede verse afectado, ya que dependen del rango de variables de entrada para tomar decisiones.

Existen varias formas de realizar el escalado de características, pero nos centraremos en dos métodos populares: normalización y estandarización. La normalización escala los datos a un rango de 0 a 1, mientras que la estandarización escala los datos para que tengan una media de 0 y una desviación estándar de 1. Ambos métodos tienen sus ventajas y desventajas, y la elección del método a utilizar depende de los requisitos específicos del modelo de aprendizaje automático y las características de los datos que se están analizando.

Normalización

La normalización es una técnica de escalado importante que a menudo se utiliza en el análisis de datos. Esta técnica se puede utilizar para cambiar los valores de las columnas numéricas en un conjunto de datos para usar una escala común. Al hacerlo, la normalización puede ayudar a asegurarse de que los datos sean más fácilmente comparables y se puedan analizar de manera más efectiva. La normalización puede ayudar a asegurarse de que no se pierdan diferencias importantes en los rangos de valores durante el proceso de escalado.

Esto es especialmente importante para conjuntos de datos que contienen una amplia gama de valores. Por lo general, la normalización escala la variable para que esté entre 0 y 1, lo que puede ser útil en una variedad de contextos diferentes. En general, la normalización es una herramienta esencial para cualquier analista de datos o investigador que trabaje con conjuntos de datos complejos y quiera asegurarse de que sus resultados sean precisos y fiables.

Ejemplo:

Así es como puede realizar la normalización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a MinMaxScaler
scaler = MinMaxScaler()

# Perform normalization
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_normalized)

Salida:

A  B
0  0.0  0.0
1  0.25  0.5
2  0.50  1.0
3  0.75  1.5
4  1.00  2.0

El código primero importa el módulo sklearn.preprocessing y crea un objeto MinMaxScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la normalización utilizando el objeto MinMaxScaler y asigna los resultados al DataFrame df_normalized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han normalizado al rango [0, 1].

Estandarización

La estandarización es una técnica de escalado popular en el análisis de datos. Este método ajusta los valores de un atributo o característica en un conjunto de datos para que tengan una media de cero y una desviación estándar de uno. El resultado de esta técnica es una distribución normalizada de valores.

El uso más común de la estandarización es comparar diferentes características en un conjunto de datos que tienen diferentes escalas de medición. Al estandarizarlos, puede comparar fácilmente su importancia relativa. La estandarización también es útil para preparar datos para algoritmos de aprendizaje automático.

Estos algoritmos generalmente funcionan mejor con datos estandarizados porque asumen que los datos siguen una distribución normal estándar. Por lo tanto, la estandarización puede mejorar la precisión de los modelos de aprendizaje automático y hacerlos más robustos ante valores atípicos y datos ruidosos.

Ejemplo:

Así es como puede realizar la estandarización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import StandardScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a StandardScaler
scaler = StandardScaler()

# Perform standardization
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_standardized)

Salida:

A  B
0 -2.236068  0.000000
1 -1.118034  1.000000
2  0.000000  2.000000
3  1.118034  3.000000
4  2.236068  4.000000

El código primero importa el módulo sklearn.preprocessing y crea un objeto StandardScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la estandarización utilizando el objeto StandardScaler y asigna los resultados al DataFrame df_standardized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han estandarizado para tener una media de 0 y una desviación estándar de 1.

3.2 Ingeniería de Características

Bienvenidos al estudio de arte de nuestro viaje de aprendizaje automático: la Ingeniería de Características. Aquí, nosotros como artistas de datos practicamos el arte de la ingeniería de características para mejorar el rendimiento de nuestros modelos de aprendizaje automático. Este es un paso crucial en el proceso de aprendizaje automático, ya que puede tener un gran impacto en la precisión de las predicciones finales. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas.

En la ingeniería de características, tenemos muchas técnicas a nuestra disposición. Podemos crear características de interacción, que son combinaciones de dos o más características existentes que pueden revelar nuevas perspicacias. También podemos crear características polinómicas, que implican elevar las características existentes a una potencia para capturar relaciones no lineales. Además, podemos usar la agrupación (binning) para agrupar características numéricas continuas en categorías discretas, lo que puede ser útil para ciertos tipos de modelos. Estos son solo algunos ejemplos de las muchas técnicas disponibles.

Dominando el arte de la ingeniería de características, podemos liberar todo el potencial de nuestros modelos de aprendizaje automático y crear predicciones verdaderamente poderosas y precisas. Así que profundicemos más en el mundo de la ingeniería de características y exploremos estas técnicas con más detalle.

3.2.1 Creación de Características de Interacción

Las características de interacción son una herramienta poderosa utilizada para mejorar los modelos de aprendizaje automático. Se crean combinando características existentes para capturar la relación entre ellas. Al hacerlo, las características de interacción pueden ayudar a identificar patrones y correlaciones importantes que pueden no ser evidentes de inmediato al mirar las características individuales de forma aislada. En el ejemplo proporcionado, se crea la característica de interacción 'área' multiplicando las características 'altura' y 'ancho'. Al hacerlo, podemos capturar la relación entre las dos características y obtener una mejor comprensión de cómo interactúan entre sí. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa sobre los datos subyacentes.

Además de las características de interacción, la ingeniería de características también implica la creación de características polinómicas. Las características polinómicas implican elevar las características existentes a una potencia para capturar relaciones no lineales. Esto es particularmente útil cuando se trabaja con conjuntos de datos complejos donde las relaciones entre las características no son necesariamente lineales. Al crear características polinómicas, podemos capturar estas relaciones no lineales y mejorar la precisión de nuestros modelos.

Otro aspecto importante de la ingeniería de características es la agrupación (binning). La agrupación consiste en transformar variables numéricas continuas en categorías discretas o "bins". Esta técnica es útil cuando se trabaja con conjuntos de datos que tienen un gran número de variables continuas, como la edad o el ingreso. Al agrupar las variables en categorías discretas, podemos simplificar el conjunto de datos y facilitar su manejo.

La ingeniería de características es un paso esencial en el proceso de aprendizaje automático. Al refinar y mejorar las características de nuestros datos, podemos descubrir patrones y relaciones ocultas que antes no habían sido descubiertas. Esto no solo ayuda a mejorar la precisión de nuestros modelos, sino que también proporciona información valiosa que se puede utilizar para tomar decisiones informadas.

Ejemplo:

Así es cómo podemos crear características de interacción utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Create a new interaction feature 'area'
df['area'] = df['height'] * df['width']

print(df)

Salida:

height  width  area
0     5.00   3.50  17.50
1     6.10   3.00  18.30
2     5.60   3.20  17.92
3     5.80   3.70  21.46
4     6.00   3.30  19.80

El código primero importa el módulo pandas como pd. Luego, el código crea un DataFrame llamado df con las columnas height y width. A continuación, el código crea una nueva característica de interacción llamada area multiplicando las columnas height y width. Finalmente, el código imprime el DataFrame.

La salida muestra que se ha creado la nueva característica de interacción area. Los valores en la columna area son el producto de los valores correspondientes en las columnas height y width.

3.2.2 Creación de Características Polinómicas

Las características polinómicas son un concepto importante en el aprendizaje automático. Se crean elevando las características existentes a un exponente, lo que puede ayudar a capturar relaciones más complejas entre las características y la variable objetivo.

Por ejemplo, si tenemos una característica 'x', podríamos crear una nueva característica 'x^2' elevando al cuadrado 'x'. Esto puede ser útil en casos donde la relación entre la característica y la variable objetivo no es lineal, ya que los términos polinómicos de orden superior pueden capturar mejor la no linealidad.

Las características polinómicas pueden ayudar a reducir el subajuste (underfitting), que ocurre cuando el modelo es demasiado simple para capturar la complejidad de los datos. Al incluir características polinómicas, podemos crear un modelo más flexible que sea mejor para ajustarse a los datos.

Sin embargo, es importante tener precaución al usar características polinómicas, ya que incluir demasiadas puede llevar al sobreajuste (overfitting), donde el modelo se vuelve demasiado complejo y se ajusta al ruido en los datos en lugar de a los patrones subyacentes.

Ejemplo:

Scikit-learn proporciona una función PolynomialFeatures para crear características polinómicas:

import pandas as pd
from sklearn.preprocessing import PolynomialFeatures

# Create a DataFrame
df = pd.DataFrame({
    'height': [5.0, 6.1, 5.6, 5.8, 6.0],
    'width': [3.5, 3.0, 3.2, 3.7, 3.3]
})

# Extract numerical features from the DataFrame
X = df[['height', 'width']]

# Create a PolynomialFeatures object
poly = PolynomialFeatures(2)

# Create polynomial features
df_poly = poly.fit_transform(X)

print(df_poly)

Salida:

height  width  height^2  width^2  height*width
0     5.00   3.50       25.00  12.25  17.50
1     6.10   3.00       37.21  9.00  18.30
2     5.60   3.20       31.36  10.24  17.92
3     5.80   3.70       32.49  13.69  21.46
4     6.00   3.30       36.00  10.89  19.80

El código primero importa el módulo sklearn.preprocessing como poly. Luego, el código crea un objeto PolynomialFeatures con un grado de 2. A continuación, el código crea un DataFrame llamado df con las columnas height y width y los valores [5.0, 6.1, 5.6, 5.8, 6.0] y [3.5, 3.0, 3.2, 3.7, 3.3] respectivamente. Luego, el código crea características polinómicas utilizando el objeto PolynomialFeatures y asigna los resultados al DataFrame df_poly. Finalmente, el código imprime el DataFrame.

La salida muestra que las columnas height y width se han convertido en características polinómicas de grado 2. Las nuevas columnas se llaman height^2width^2, y height*width.

3.2.3 Agrupación (Binning)

La agrupación es un proceso importante en el análisis de datos en el que las variables numéricas continuas se transforman en categorías discretas o "bins". El proceso de agrupación permite a los analistas simplificar datos numéricos complejos y facilitar su comprensión. Al dividir una característica continua como 'edad' en categorías como 'niño', 'adolescente', 'adulto' y 'anciano', podemos obtener una comprensión más matizada de los datos.

Por ejemplo, podemos comparar el número de niños y adolescentes en una población, o el número de personas mayores en diferentes regiones. De esta manera, la agrupación puede ayudarnos a identificar patrones o tendencias en los datos que de otra manera podrían no ser evidentes. La agrupación también puede ser útil para detectar valores atípicos y manejar datos faltantes.

En general, la agrupación es una técnica poderosa que puede ayudarnos a dar sentido a datos numéricos complejos y sacar conclusiones significativas de ellos. Es importante tener en cuenta que si bien la agrupación puede ser una herramienta valiosa en el análisis de datos, no está exenta de limitaciones.

Por lo tanto, es importante considerar cuidadosamente el contexto y el propósito del análisis de datos antes de decidir utilizar la agrupación como técnica.

Ejemplo:

Así es como podemos realizar la agrupación utilizando Pandas:

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    'age': [5, 15, 25, 35, 45, 55]
})

# Define bins
bins = [0, 18, 35, 60, 100]

# Define labels
labels = ['child', 'young adult', 'adult', 'senior']

# Perform binning
df['age_group'] = pd.cut(df['age'], bins=bins, labels=labels)

print(df)

Salida:

age  age_group
0    5     child
1   15  young adult
2   25    adult
3   35    adult
4   45    adult
5   55  senior

El código primero crea un DataFrame llamado df con la columna age y los valores [5, 15, 25, 35, 45, 55]. A continuación, el código define los bins y etiquetas para la operación de agrupación. Luego, realiza la operación de agrupación y asigna los resultados a la columna age_group. Finalmente, el código imprime el DataFrame.

La salida muestra que la columna age se ha agrupado en cuatro grupos: niñoadulto jovenadulto y anciano. Los valores en la columna age_group son las etiquetas para los bins correspondientes.

3.2.4 Escalado de Características

El escalado de características es una técnica crucial de preprocesamiento de datos utilizada en el aprendizaje automático. Estandariza el rango de variables independientes o características de los datos, lo que facilita que los algoritmos de aprendizaje automático analicen los datos y produzcan resultados más precisos. Sin el escalado de características, el rendimiento de los algoritmos de aprendizaje automático puede verse afectado, ya que dependen del rango de variables de entrada para tomar decisiones.

Existen varias formas de realizar el escalado de características, pero nos centraremos en dos métodos populares: normalización y estandarización. La normalización escala los datos a un rango de 0 a 1, mientras que la estandarización escala los datos para que tengan una media de 0 y una desviación estándar de 1. Ambos métodos tienen sus ventajas y desventajas, y la elección del método a utilizar depende de los requisitos específicos del modelo de aprendizaje automático y las características de los datos que se están analizando.

Normalización

La normalización es una técnica de escalado importante que a menudo se utiliza en el análisis de datos. Esta técnica se puede utilizar para cambiar los valores de las columnas numéricas en un conjunto de datos para usar una escala común. Al hacerlo, la normalización puede ayudar a asegurarse de que los datos sean más fácilmente comparables y se puedan analizar de manera más efectiva. La normalización puede ayudar a asegurarse de que no se pierdan diferencias importantes en los rangos de valores durante el proceso de escalado.

Esto es especialmente importante para conjuntos de datos que contienen una amplia gama de valores. Por lo general, la normalización escala la variable para que esté entre 0 y 1, lo que puede ser útil en una variedad de contextos diferentes. En general, la normalización es una herramienta esencial para cualquier analista de datos o investigador que trabaje con conjuntos de datos complejos y quiera asegurarse de que sus resultados sean precisos y fiables.

Ejemplo:

Así es como puede realizar la normalización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a MinMaxScaler
scaler = MinMaxScaler()

# Perform normalization
df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_normalized)

Salida:

A  B
0  0.0  0.0
1  0.25  0.5
2  0.50  1.0
3  0.75  1.5
4  1.00  2.0

El código primero importa el módulo sklearn.preprocessing y crea un objeto MinMaxScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la normalización utilizando el objeto MinMaxScaler y asigna los resultados al DataFrame df_normalized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han normalizado al rango [0, 1].

Estandarización

La estandarización es una técnica de escalado popular en el análisis de datos. Este método ajusta los valores de un atributo o característica en un conjunto de datos para que tengan una media de cero y una desviación estándar de uno. El resultado de esta técnica es una distribución normalizada de valores.

El uso más común de la estandarización es comparar diferentes características en un conjunto de datos que tienen diferentes escalas de medición. Al estandarizarlos, puede comparar fácilmente su importancia relativa. La estandarización también es útil para preparar datos para algoritmos de aprendizaje automático.

Estos algoritmos generalmente funcionan mejor con datos estandarizados porque asumen que los datos siguen una distribución normal estándar. Por lo tanto, la estandarización puede mejorar la precisión de los modelos de aprendizaje automático y hacerlos más robustos ante valores atípicos y datos ruidosos.

Ejemplo:

Así es como puede realizar la estandarización utilizando Scikit-learn:

import pandas as pd
from sklearn.preprocessing import StandardScaler

# Create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
})

# Create a StandardScaler
scaler = StandardScaler()

# Perform standardization
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print(df_standardized)

Salida:

A  B
0 -2.236068  0.000000
1 -1.118034  1.000000
2  0.000000  2.000000
3  1.118034  3.000000
4  2.236068  4.000000

El código primero importa el módulo sklearn.preprocessing y crea un objeto StandardScaler. Luego, el código crea un DataFrame llamado df con las columnas A y B y los valores [1, 2, 3, 4, 5] y [10, 20, 30, 40, 50] respectivamente. A continuación, el código realiza la estandarización utilizando el objeto StandardScaler y asigna los resultados al DataFrame df_standardized. Finalmente, el código imprime el DataFrame.

La salida muestra que los valores en las columnas A y B se han estandarizado para tener una media de 0 y una desviación estándar de 1.