Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende ColumnTransformer | Pipelines
Introducción al ML con Scikit-learn

bookColumnTransformer

De cara al futuro, cuando se invoca el método .fit_transform(X) en un objeto Pipeline, este aplica cada transformador al conjunto completo de características en X. Sin embargo, este comportamiento puede no ser siempre el deseado.

Por ejemplo, es posible que no se desee codificar valores numéricos o que se necesite aplicar diferentes transformadores a columnas específicas — como utilizar OrdinalEncoder para características ordinales y OneHotEncoder para características nominales.

El ColumnTransformer resuelve este problema al permitir que cada columna sea tratada por separado. Para crear un ColumnTransformer, se puede utilizar la función make_column_transformer del módulo sklearn.compose.

La función toma como argumentos tuplas con el transformador y la lista de columnas a las que se debe aplicar dicho transformador.

Por ejemplo, se puede crear un ColumnTransformer que aplique el OrdinalEncoder solo a la columna 'education' y el OneHotEncoder solo a la columna 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)
Note
Nota

El argumento remainder especifica la acción a tomar con las columnas no mencionadas en make_column_transformer (en este caso, columnas distintas de 'gender' y 'education').

Por defecto, está configurado como 'drop', lo que significa que cualquier columna no mencionada será eliminada del conjunto de datos. Para incluir estas columnas sin modificar en la salida, establezca remainder en 'passthrough'.

Por ejemplo, considere el archivo exams.csv. Contiene varias columnas nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course') y una columna ordinal, 'parental level of education'.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
copy

Utilizando ColumnTransformer, los datos nominales pueden transformarse con OneHotEncoder y los datos ordinales con OrdinalEncoder en un solo paso.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
copy

El ColumnTransformer es en sí mismo un transformador, por lo que proporciona los métodos estándar .fit(), .fit_transform() y .transform().

question mark

Suponga que tiene un conjunto de datos con las características 'education', 'income', 'job'. ¿Qué sucederá con la columna 'income' después de ejecutar el siguiente código? (Tenga en cuenta que el argumento remainder no está especificado)

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain what the `remainder='passthrough'` argument does?

How do I specify custom order for ordinal categories in `OrdinalEncoder`?

What does the output of `ct.fit_transform(df)` look like?

Awesome!

Completion rate improved to 3.13

bookColumnTransformer

Desliza para mostrar el menú

De cara al futuro, cuando se invoca el método .fit_transform(X) en un objeto Pipeline, este aplica cada transformador al conjunto completo de características en X. Sin embargo, este comportamiento puede no ser siempre el deseado.

Por ejemplo, es posible que no se desee codificar valores numéricos o que se necesite aplicar diferentes transformadores a columnas específicas — como utilizar OrdinalEncoder para características ordinales y OneHotEncoder para características nominales.

El ColumnTransformer resuelve este problema al permitir que cada columna sea tratada por separado. Para crear un ColumnTransformer, se puede utilizar la función make_column_transformer del módulo sklearn.compose.

La función toma como argumentos tuplas con el transformador y la lista de columnas a las que se debe aplicar dicho transformador.

Por ejemplo, se puede crear un ColumnTransformer que aplique el OrdinalEncoder solo a la columna 'education' y el OneHotEncoder solo a la columna 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)
Note
Nota

El argumento remainder especifica la acción a tomar con las columnas no mencionadas en make_column_transformer (en este caso, columnas distintas de 'gender' y 'education').

Por defecto, está configurado como 'drop', lo que significa que cualquier columna no mencionada será eliminada del conjunto de datos. Para incluir estas columnas sin modificar en la salida, establezca remainder en 'passthrough'.

Por ejemplo, considere el archivo exams.csv. Contiene varias columnas nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course') y una columna ordinal, 'parental level of education'.

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
copy

Utilizando ColumnTransformer, los datos nominales pueden transformarse con OneHotEncoder y los datos ordinales con OrdinalEncoder en un solo paso.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
copy

El ColumnTransformer es en sí mismo un transformador, por lo que proporciona los métodos estándar .fit(), .fit_transform() y .transform().

question mark

Suponga que tiene un conjunto de datos con las características 'education', 'income', 'job'. ¿Qué sucederá con la columna 'income' después de ejecutar el siguiente código? (Tenga en cuenta que el argumento remainder no está especificado)

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2
some-alt