ColumnTransformer
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'
)
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'.
12345import 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())
Utilizando ColumnTransformer, los datos nominales pueden transformarse con OneHotEncoder y los datos ordinales con OrdinalEncoder en un solo paso.
12345678910111213from 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))
El ColumnTransformer es en sí mismo un transformador, por lo que proporciona los métodos estándar .fit(), .fit_transform() y .transform().
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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?
Awesome!
Completion rate improved to 3.13
ColumnTransformer
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'
)
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'.
12345import 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())
Utilizando ColumnTransformer, los datos nominales pueden transformarse con OneHotEncoder y los datos ordinales con OrdinalEncoder en un solo paso.
12345678910111213from 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))
El ColumnTransformer es en sí mismo un transformador, por lo que proporciona los métodos estándar .fit(), .fit_transform() y .transform().
¡Gracias por tus comentarios!