Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære One-Hot-Koder | Forbehandling av Data med Scikit-learn
ML Introduksjon med Scikit-learn

bookOne-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).

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

For å bruke OneHotEncoder, trenger du bare å initialisere et objekt og sende kolonner til .fit_transform() slik du gjør med andre transformatorer.

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
question mark

OneHotEncoder oppretter nye kolonner. Er dette korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

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

bookOne-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).

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

For å bruke OneHotEncoder, trenger du bare å initialisere et objekt og sende kolonner til .fit_transform() slik du gjør med andre transformatorer.

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
question mark

OneHotEncoder oppretter nye kolonner. Er dette korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6
some-alt