One-Hot-koder
Når det gjelder nominale verdier, er håndteringen av dem noe 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, siden det representerer kategorier uten å antyde et hierarki.
For å kode nominale data brukes transformatoren OneHotEncoder. Den oppretter en kolonne for hver unik 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 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.
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.
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, siden det representerer kategorier uten å antyde et hierarki.
For å kode nominale data brukes transformatoren OneHotEncoder. Den oppretter en kolonne for hver unik 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 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.
Takk for tilbakemeldingene dine!