One-Hot-Koder
Når det gjelder nominale verdier, er håndteringen av dem noe mer kompleks.
La oss se på en egenskap som inneholder ordinale data, for eksempel brukervurderinger. Verdiene varierer fra 'Terrible' til 'Great'. Det er fornuftig å kode disse vurderingene som tall fra 0 til 4 fordi ML-modellen vil gjenkjenne den iboende rekkefølgen.
Tenk nå på en egenskap merket 'city'
med fem ulike byer. Å kode dem som tall fra 0 til 4 vil feilaktig antyde en logisk rekkefølge til ML-modellen, noe som faktisk ikke eksisterer. Derfor er en mer hensiktsmessig tilnærming å bruke one-hot encoding, som unngår å antyde en falsk rekkefølge.
For å kode nominale data brukes transformatoren OneHotEncoder
. Den oppretter en kolonne for hver unike verdi. For hver rad settes 1 i kolonnen som tilsvarer radens verdi, og 0 i de andre kolonnene.
Det som opprinnelig var 'NewYork' har nå 1 i kolonnen 'City_NewYork'
og 0 i de andre City_
-kolonnene.
La oss bruke OneHotEncoder
på vårt penguins-datasett! Det finnes to nominelle egenskaper, 'island'
og 'sex'
(uten å ta med 'species'
, vi skal lære hvordan vi håndterer target encoding i neste kapittel).
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())
For å bruke OneHotEncoder
, trenger du bare å initialisere et objekt og sende kolonner til .fit_transform()
slik du gjør med andre transformatorer.
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())
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
One-Hot-Koder
Sveip for å vise menyen
Når det gjelder nominale verdier, er håndteringen av dem noe mer kompleks.
La oss se på en egenskap som inneholder ordinale data, for eksempel brukervurderinger. Verdiene varierer fra 'Terrible' til 'Great'. Det er fornuftig å kode disse vurderingene som tall fra 0 til 4 fordi ML-modellen vil gjenkjenne den iboende rekkefølgen.
Tenk nå på en egenskap merket 'city'
med fem ulike byer. Å kode dem som tall fra 0 til 4 vil feilaktig antyde en logisk rekkefølge til ML-modellen, noe som faktisk ikke eksisterer. Derfor er en mer hensiktsmessig tilnærming å bruke one-hot encoding, som unngår å antyde en falsk rekkefølge.
For å kode nominale data brukes transformatoren OneHotEncoder
. Den oppretter en kolonne for hver unike verdi. For hver rad settes 1 i kolonnen som tilsvarer radens verdi, og 0 i de andre kolonnene.
Det som opprinnelig var 'NewYork' har nå 1 i kolonnen 'City_NewYork'
og 0 i de andre City_
-kolonnene.
La oss bruke OneHotEncoder
på vårt penguins-datasett! Det finnes to nominelle egenskaper, 'island'
og 'sex'
(uten å ta med 'species'
, vi skal lære hvordan vi håndterer target encoding i neste kapittel).
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())
For å bruke OneHotEncoder
, trenger du bare å initialisere et objekt og sende kolonner til .fit_transform()
slik du gjør med andre transformatorer.
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())
Takk for tilbakemeldingene dine!