Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende ColumnTransformer | Tuberías
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 recibe 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'
)

Por ejemplo, se utilizará un archivo exams.csv que contiene columnas nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course'). También contiene 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

Con la ayuda de ColumnTransformer, es posible transformar simultáneamente datos nominales utilizando OneHotEncoder y datos ordinales utilizando 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

"Como cabría esperar, el ColumnTransformer es un transformador, por lo que incluye todos los métodos necesarios para un transformador, como .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

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 recibe 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'
)

Por ejemplo, se utilizará un archivo exams.csv que contiene columnas nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course'). También contiene 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

Con la ayuda de ColumnTransformer, es posible transformar simultáneamente datos nominales utilizando OneHotEncoder y datos ordinales utilizando 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

"Como cabría esperar, el ColumnTransformer es un transformador, por lo que incluye todos los métodos necesarios para un transformador, como .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