Ordinalenkoder
Det neste problemet vi skal løse er kategoriske data. Husk at det finnes to typer kategoriske data.
Ordinal data følger en naturlig rekkefølge, mens nominal ikke gjør det. Siden det finnes en naturlig rekkefølge, kan vi kode kategoriene til tall i denne rekkefølgen.
For eksempel kan vi kode kolonnen 'rate'
som inneholder verdiene 'Terrible', 'Bad', 'OK', 'Good' og 'Great' slik:
- 'Terrible' – 0;
- 'Bad' – 1;
- 'OK' – 2;
- 'Good' – 3;
- 'Great' – 4.
For å kode ordinal data brukes OrdinalEncoder
. Den koder bare kategoriene til 0, 1, 2, ... .
OrdinalEncoder
er enkel å bruke, som alle andre transformere. Den eneste utfordringen er å angi argumentet categories
korrekt.
La oss se på et eksempel. Vi har et datasett (ikke penguins-datasettet) med en kolonne kalt 'education'
. Nå skal vi undersøke de unike verdiene.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Vi må lage en liste med ordnede kategoriske verdier, i dette tilfellet fra 'HS-grad' til 'Doctorate'.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Hvis du trenger å transformere flere funksjoner ved hjelp av OrdinalEncoder
, er det viktig å spesifisere kategoriene for hver kolonne. Dette kan gjøres ved å bruke argumentet categories
som vist nedenfor:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Hvilken påstand beskriver best bruken av OrdinalEncoder
for håndtering av kategoriske data i et datasett?
2. Anta at du har en kategorisk kolonne kalt 'Color'
. Ville det vært hensiktsmessig å bruke OrdinalEncoder
for å kode dens verdier?
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
Ordinalenkoder
Sveip for å vise menyen
Det neste problemet vi skal løse er kategoriske data. Husk at det finnes to typer kategoriske data.
Ordinal data følger en naturlig rekkefølge, mens nominal ikke gjør det. Siden det finnes en naturlig rekkefølge, kan vi kode kategoriene til tall i denne rekkefølgen.
For eksempel kan vi kode kolonnen 'rate'
som inneholder verdiene 'Terrible', 'Bad', 'OK', 'Good' og 'Great' slik:
- 'Terrible' – 0;
- 'Bad' – 1;
- 'OK' – 2;
- 'Good' – 3;
- 'Great' – 4.
For å kode ordinal data brukes OrdinalEncoder
. Den koder bare kategoriene til 0, 1, 2, ... .
OrdinalEncoder
er enkel å bruke, som alle andre transformere. Den eneste utfordringen er å angi argumentet categories
korrekt.
La oss se på et eksempel. Vi har et datasett (ikke penguins-datasettet) med en kolonne kalt 'education'
. Nå skal vi undersøke de unike verdiene.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Vi må lage en liste med ordnede kategoriske verdier, i dette tilfellet fra 'HS-grad' til 'Doctorate'.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Hvis du trenger å transformere flere funksjoner ved hjelp av OrdinalEncoder
, er det viktig å spesifisere kategoriene for hver kolonne. Dette kan gjøres ved å bruke argumentet categories
som vist nedenfor:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Hvilken påstand beskriver best bruken av OrdinalEncoder
for håndtering av kategoriske data i et datasett?
2. Anta at du har en kategorisk kolonne kalt 'Color'
. Ville det vært hensiktsmessig å bruke OrdinalEncoder
for å kode dens verdier?
Takk for tilbakemeldingene dine!