One-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.
123456import 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())
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.
1234567891011import 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())
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.
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
One-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.
123456import 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())
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.
1234567891011import 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())
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.
Bedankt voor je feedback!