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

bookOne-hotencoder

Bij nominale waarden is de verwerking iets complexer.

Voor ordinale data, zoals gebruikersbeoordelingen van 'Terrible' tot 'Great', is codering als getallen van 0 tot 4 geschikt omdat het model de inherente volgorde kan vastleggen.

Voor een kenmerk zoals 'city' met vijf verschillende categorieën, zou codering als getallen van 0 tot 4 echter ten onrechte een volgorde suggereren. In dit geval is one-hot encoding een betere keuze, omdat het categorieën weergeeft zonder een hiërarchie te impliceren.

Voor het coderen van nominale data wordt de OneHotEncoder-transformer gebruikt. Deze maakt een kolom voor elke unieke waarde. Voor elke rij wordt vervolgens een 1 geplaatst in de kolom van de waarde van die rij en een 0 in de andere kolommen.

Wat oorspronkelijk 'NewYork' was, heeft nu 1 in de kolom 'City_NewYork' en 0 in de andere City_ kolommen.

Pas OneHotEncoder toe op de penguins dataset. De nominale kenmerken zijn 'island' en 'sex'. De kolom 'species' is het doel en wordt apart behandeld bij het bespreken van target encoding in het volgende hoofdstuk.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Om OneHotEncoder toe te passen, initialiseert u het encoder-object en geeft u de geselecteerde kolommen door aan .fit_transform(), op dezelfde manier als bij andere transformators.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Opmerking

De methode .toarray() zet de spaarzame matrix die door de OneHotEncoder wordt geproduceerd om in een dichte NumPy-array. Dichte arrays tonen alle waarden expliciet, waardoor het eenvoudiger wordt om de gecodeerde gegevens binnen een DataFrame te visualiseren en te bewerken. Spaarzame matrices slaan alleen niet-nul elementen op, wat het geheugengebruik optimaliseert. U kunt deze methode weglaten om het verschil in uitvoer te zien.

question mark

OneHotEncoder maakt nieuwe kolommen aan. Is dit correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6

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

bookOne-hotencoder

Veeg om het menu te tonen

Bij nominale waarden is de verwerking iets complexer.

Voor ordinale data, zoals gebruikersbeoordelingen van 'Terrible' tot 'Great', is codering als getallen van 0 tot 4 geschikt omdat het model de inherente volgorde kan vastleggen.

Voor een kenmerk zoals 'city' met vijf verschillende categorieën, zou codering als getallen van 0 tot 4 echter ten onrechte een volgorde suggereren. In dit geval is one-hot encoding een betere keuze, omdat het categorieën weergeeft zonder een hiërarchie te impliceren.

Voor het coderen van nominale data wordt de OneHotEncoder-transformer gebruikt. Deze maakt een kolom voor elke unieke waarde. Voor elke rij wordt vervolgens een 1 geplaatst in de kolom van de waarde van die rij en een 0 in de andere kolommen.

Wat oorspronkelijk 'NewYork' was, heeft nu 1 in de kolom 'City_NewYork' en 0 in de andere City_ kolommen.

Pas OneHotEncoder toe op de penguins dataset. De nominale kenmerken zijn 'island' en 'sex'. De kolom 'species' is het doel en wordt apart behandeld bij het bespreken van target encoding in het volgende hoofdstuk.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Om OneHotEncoder toe te passen, initialiseert u het encoder-object en geeft u de geselecteerde kolommen door aan .fit_transform(), op dezelfde manier als bij andere transformators.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Opmerking

De methode .toarray() zet de spaarzame matrix die door de OneHotEncoder wordt geproduceerd om in een dichte NumPy-array. Dichte arrays tonen alle waarden expliciet, waardoor het eenvoudiger wordt om de gecodeerde gegevens binnen een DataFrame te visualiseren en te bewerken. Spaarzame matrices slaan alleen niet-nul elementen op, wat het geheugengebruik optimaliseert. U kunt deze methode weglaten om het verschil in uitvoer te zien.

question mark

OneHotEncoder maakt nieuwe kolommen aan. Is dit correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6
some-alt