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 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 slike tilfeller er one-hot encoding et bedre valg, da det representerer kategorier uten å antyde noen 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 mål-koding diskuteres 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 arrayer 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 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

Suggested prompts:

Can you explain how OneHotEncoder works in more detail?

What are the unique values in the 'island' and 'sex' columns?

How do I interpret the output of the OneHotEncoder?

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 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 slike tilfeller er one-hot encoding et bedre valg, da det representerer kategorier uten å antyde noen 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 mål-koding diskuteres 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 arrayer 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 2. Kapittel 6
some-alt