Kolomtransformator
Bij het aanroepen van .fit_transform(X) op een Pipeline, wordt elke transformer toegepast op alle kolommen, wat niet altijd wenselijk is. Sommige kolommen vereisen verschillende encoders — bijvoorbeeld, OrdinalEncoder voor ordinale kenmerken en OneHotEncoder voor nominale kenmerken.
ColumnTransformer lost dit op door je toe te staan verschillende transformers aan specifieke kolommen toe te wijzen met behulp van make_column_transformer.
make_column_transformer accepteert tuples van (transformer, [columns]).
Bijvoorbeeld, het toepassen van OrdinalEncoder op 'education' en OneHotEncoder op 'gender':
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder bepaalt wat er gebeurt met niet-gespecificeerde kolommen.
Standaard: 'drop'.
Om alle andere kolommen ongewijzigd te behouden, stel je remainder='passthrough' in.
Neem bijvoorbeeld het bestand exams.csv. Het bevat meerdere nominale kolommen ('gender', 'race/ethnicity', 'lunch', 'test preparation course') en één ordinale kolom, '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())
Met behulp van ColumnTransformer kan nominale data worden getransformeerd met OneHotEncoder en ordinale data met OrdinalEncoder in één enkele stap.
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))
De ColumnTransformer is zelf een transformer, dus biedt het de standaardmethoden .fit(), .fit_transform() en .transform() aan.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 3.13
Kolomtransformator
Veeg om het menu te tonen
Bij het aanroepen van .fit_transform(X) op een Pipeline, wordt elke transformer toegepast op alle kolommen, wat niet altijd wenselijk is. Sommige kolommen vereisen verschillende encoders — bijvoorbeeld, OrdinalEncoder voor ordinale kenmerken en OneHotEncoder voor nominale kenmerken.
ColumnTransformer lost dit op door je toe te staan verschillende transformers aan specifieke kolommen toe te wijzen met behulp van make_column_transformer.
make_column_transformer accepteert tuples van (transformer, [columns]).
Bijvoorbeeld, het toepassen van OrdinalEncoder op 'education' en OneHotEncoder op 'gender':
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder bepaalt wat er gebeurt met niet-gespecificeerde kolommen.
Standaard: 'drop'.
Om alle andere kolommen ongewijzigd te behouden, stel je remainder='passthrough' in.
Neem bijvoorbeeld het bestand exams.csv. Het bevat meerdere nominale kolommen ('gender', 'race/ethnicity', 'lunch', 'test preparation course') en één ordinale kolom, '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())
Met behulp van ColumnTransformer kan nominale data worden getransformeerd met OneHotEncoder en ordinale data met OrdinalEncoder in één enkele stap.
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))
De ColumnTransformer is zelf een transformer, dus biedt het de standaardmethoden .fit(), .fit_transform() en .transform() aan.
Bedankt voor je feedback!