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 Aprendizaje Automático con Python

bookColumnTransformer

Al llamar a .fit_transform(X) en un Pipeline, cada transformador se aplica a todas las columnas, lo cual no siempre es deseable. Algunas columnas pueden requerir codificadores diferentes — por ejemplo, OrdinalEncoder para características ordinales y OneHotEncoder para las nominales. ColumnTransformer resuelve esto permitiendo asignar diferentes transformadores a columnas específicas utilizando make_column_transformer.

make_column_transformer acepta tuplas de (transformer, [columns]). Por ejemplo, aplicar OrdinalEncoder a 'education' y OneHotEncoder a 'gender':

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

remainder controla lo que sucede con las columnas no especificadas. Por defecto: 'drop'. Para mantener todas las demás columnas sin cambios, establecer remainder='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.

12345678910111213
from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] 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 know which columns are nominal or ordinal in my own dataset?

Can you show how to use the transformed data in a machine learning model?

bookColumnTransformer

Desliza para mostrar el menú

Al llamar a .fit_transform(X) en un Pipeline, cada transformador se aplica a todas las columnas, lo cual no siempre es deseable. Algunas columnas pueden requerir codificadores diferentes — por ejemplo, OrdinalEncoder para características ordinales y OneHotEncoder para las nominales. ColumnTransformer resuelve esto permitiendo asignar diferentes transformadores a columnas específicas utilizando make_column_transformer.

make_column_transformer acepta tuplas de (transformer, [columns]). Por ejemplo, aplicar OrdinalEncoder a 'education' y OneHotEncoder a 'gender':

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

remainder controla lo que sucede con las columnas no especificadas. Por defecto: 'drop'. Para mantener todas las demás columnas sin cambios, establecer remainder='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.

12345678910111213
from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] 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