One-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 OneHotEncoder
på penguins-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.
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
, initialiser encoder-objektet og send de valgte kolonnene til .fit_transform()
, på samme måte som 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())
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.
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
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
One-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 OneHotEncoder
på penguins-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.
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
, initialiser encoder-objektet og send de valgte kolonnene til .fit_transform()
, på samme måte som 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())
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.
Takk for tilbakemeldingene dine!