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.
Awesome!
Completion rate improved to 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!