Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære One-Hot-enkoder | Seksjon
Practice
Projects
Quizzes & Challenges
Quizer
Challenges
/
Grunnleggende Maskinlæring

bookOne-Hot-enkoder

Når det gjelder nominale verdier, er håndteringen av dem litt mer kompleks.

For ordinale data, som brukervurderinger fra 'Terrible' til 'Great', er det hensiktsmessig å kode dem som tall fra 0 til 4 fordi modellen kan fange opp den iboende rekkefølgen.

Derimot, for en egenskap som 'city' med fem distinkte kategorier, vil koding som tall fra 0 til 4 feilaktig antyde en rekkefølge. I dette tilfellet er one-hot encoding et bedre valg, siden det representerer kategorier uten å antyde et hierarki.

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.

Bruk OneHotEncoderpenguins-datasettet. De nominelle egenskapene er 'island' og 'sex'. Kolonnen 'species' er målet og vil bli behandlet separat når vi diskuterer 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, initialiser encoder-objektet og send de valgte kolonnene til .fit_transform(), på samme måte som 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
Note
Merk

Metoden .toarray() konverterer sparse matrix-utdata fra OneHotEncoder til en tett NumPy-array. Tette arrays viser alle verdier eksplisitt, noe som gjør det enklere å visualisere og manipulere de kodede dataene i en DataFrame. Sparse matriser lagrer kun ikke-null-elementer, noe som optimaliserer minnebruken. Du kan utelate denne metoden for å se forskjellen i utdata.

question mark

OneHotEncoder lager nye kolonner. Er dette korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 11

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

bookOne-Hot-enkoder

Sveip for å vise menyen

Når det gjelder nominale verdier, er håndteringen av dem litt mer kompleks.

For ordinale data, som brukervurderinger fra 'Terrible' til 'Great', er det hensiktsmessig å kode dem som tall fra 0 til 4 fordi modellen kan fange opp den iboende rekkefølgen.

Derimot, for en egenskap som 'city' med fem distinkte kategorier, vil koding som tall fra 0 til 4 feilaktig antyde en rekkefølge. I dette tilfellet er one-hot encoding et bedre valg, siden det representerer kategorier uten å antyde et hierarki.

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.

Bruk OneHotEncoderpenguins-datasettet. De nominelle egenskapene er 'island' og 'sex'. Kolonnen 'species' er målet og vil bli behandlet separat når vi diskuterer 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, initialiser encoder-objektet og send de valgte kolonnene til .fit_transform(), på samme måte som 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
Note
Merk

Metoden .toarray() konverterer sparse matrix-utdata fra OneHotEncoder til en tett NumPy-array. Tette arrays viser alle verdier eksplisitt, noe som gjør det enklere å visualisere og manipulere de kodede dataene i en DataFrame. Sparse matriser lagrer kun ikke-null-elementer, noe som optimaliserer minnebruken. Du kan utelate denne metoden for å se forskjellen i utdata.

question mark

OneHotEncoder lager nye kolonner. Er dette korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 11
some-alt