Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Kolomtransformator | Pipelines
ML-Introductie met Scikit-learn

bookKolomtransformator

Vooruitkijkend, wanneer je de methode .fit_transform(X) aanroept op een Pipeline-object, wordt elke transformer toegepast op de volledige set kenmerken in X. Dit gedrag is echter niet altijd gewenst.

Zo wil je bijvoorbeeld numerieke waarden niet coderen of moet je verschillende transformers op specifieke kolommen toepassen — zoals het gebruik van OrdinalEncoder voor ordinale kenmerken en OneHotEncoder voor nominale kenmerken.

De ColumnTransformer lost dit probleem op door elke kolom afzonderlijk te behandelen. Om een ColumnTransformer te maken, kun je de functie make_column_transformer uit de module sklearn.compose gebruiken.

De functie neemt als argumenten tuples met de transformer en de lijst van kolommen waarop deze transformer moet worden toegepast.

Bijvoorbeeld, we kunnen een ColumnTransformer maken die de OrdinalEncoder alleen toepast op de kolom 'education' en de OneHotEncoder alleen op de kolom 'gender'.

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

Het argument remainder specificeert de actie voor kolommen die niet genoemd zijn in make_column_transformer (in dit geval, andere kolommen dan 'gender' en 'education').

Standaard is deze ingesteld op 'drop', wat betekent dat niet-genoemde kolommen uit de dataset worden verwijderd. Om deze kolommen ongewijzigd in de uitvoer op te nemen, stel je remainder in op 'passthrough'.

Neem bijvoorbeeld het bestand exams.csv. Het bevat verschillende nominale kolommen ('gender', 'race/ethnicity', 'lunch', 'test preparation course') en één ordinale kolom, '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

Met behulp van ColumnTransformer kan nominale data worden getransformeerd met OneHotEncoder en ordinale data met OrdinalEncoder in één stap.

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

De ColumnTransformer is zelf een transformer en biedt daarom de standaardmethoden .fit(), .fit_transform() en .transform() aan.

question mark

Stel, je hebt een dataset met de kenmerken 'education', 'income', 'job'. Wat gebeurt er met de kolom 'income' na het uitvoeren van de volgende code? (Let op: het argument remainder is niet gespecificeerd)

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.13

bookKolomtransformator

Veeg om het menu te tonen

Vooruitkijkend, wanneer je de methode .fit_transform(X) aanroept op een Pipeline-object, wordt elke transformer toegepast op de volledige set kenmerken in X. Dit gedrag is echter niet altijd gewenst.

Zo wil je bijvoorbeeld numerieke waarden niet coderen of moet je verschillende transformers op specifieke kolommen toepassen — zoals het gebruik van OrdinalEncoder voor ordinale kenmerken en OneHotEncoder voor nominale kenmerken.

De ColumnTransformer lost dit probleem op door elke kolom afzonderlijk te behandelen. Om een ColumnTransformer te maken, kun je de functie make_column_transformer uit de module sklearn.compose gebruiken.

De functie neemt als argumenten tuples met de transformer en de lijst van kolommen waarop deze transformer moet worden toegepast.

Bijvoorbeeld, we kunnen een ColumnTransformer maken die de OrdinalEncoder alleen toepast op de kolom 'education' en de OneHotEncoder alleen op de kolom 'gender'.

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

Het argument remainder specificeert de actie voor kolommen die niet genoemd zijn in make_column_transformer (in dit geval, andere kolommen dan 'gender' en 'education').

Standaard is deze ingesteld op 'drop', wat betekent dat niet-genoemde kolommen uit de dataset worden verwijderd. Om deze kolommen ongewijzigd in de uitvoer op te nemen, stel je remainder in op 'passthrough'.

Neem bijvoorbeeld het bestand exams.csv. Het bevat verschillende nominale kolommen ('gender', 'race/ethnicity', 'lunch', 'test preparation course') en één ordinale kolom, '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

Met behulp van ColumnTransformer kan nominale data worden getransformeerd met OneHotEncoder en ordinale data met OrdinalEncoder in één stap.

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

De ColumnTransformer is zelf een transformer en biedt daarom de standaardmethoden .fit(), .fit_transform() en .transform() aan.

question mark

Stel, je hebt een dataset met de kenmerken 'education', 'income', 'job'. Wat gebeurt er met de kolom 'income' na het uitvoeren van de volgende code? (Let op: het argument remainder is niet gespecificeerd)

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2
some-alt