Ordinalencoder
Det næste problem, der skal håndteres, er kategoriske data. Der findes to hovedtyper af kategoriske variabler.
Ordinal data har en naturlig rækkefølge, mens nominal data ikke har det. På grund af denne rækkefølge kan kategorier kodes som tal i henhold til deres rangering.
For eksempel kan en 'rate'
-kolonne med værdierne 'Terrible', 'Bad', 'OK', 'Good' og 'Great' kodes som:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Til kodning af ordinal data anvendes OrdinalEncoder
. Den konverterer kategorier til heltal startende fra 0.
OrdinalEncoder
anvendes på samme måde som andre transformere. Den største udfordring er at angive argumentet categories
korrekt.
For eksempel, overvej et datasæt (ikke penguins datasættet), der indeholder en 'education'
-kolonne. Første trin er at kontrollere dens unikke værdier.
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())
En ordnet liste af kategoriske værdier skal oprettes, der spænder 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'])
Når du transformerer flere funktioner med OrdinalEncoder
, skal kategorierne for hver kolonne angives eksplicit. Dette gøres via argumentet categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Hvilken erklæring beskriver bedst brugen af OrdinalEncoder
til håndtering af kategoriske data i et datasæt?
2. Antag, at du har en kategorisk kolonne ved navn 'Color'
. Ville det være passende at bruge OrdinalEncoder
til at kode dens værdier?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.13
Ordinalencoder
Stryg for at vise menuen
Det næste problem, der skal håndteres, er kategoriske data. Der findes to hovedtyper af kategoriske variabler.
Ordinal data har en naturlig rækkefølge, mens nominal data ikke har det. På grund af denne rækkefølge kan kategorier kodes som tal i henhold til deres rangering.
For eksempel kan en 'rate'
-kolonne med værdierne 'Terrible', 'Bad', 'OK', 'Good' og 'Great' kodes som:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Til kodning af ordinal data anvendes OrdinalEncoder
. Den konverterer kategorier til heltal startende fra 0.
OrdinalEncoder
anvendes på samme måde som andre transformere. Den største udfordring er at angive argumentet categories
korrekt.
For eksempel, overvej et datasæt (ikke penguins datasættet), der indeholder en 'education'
-kolonne. Første trin er at kontrollere dens unikke værdier.
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())
En ordnet liste af kategoriske værdier skal oprettes, der spænder 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'])
Når du transformerer flere funktioner med OrdinalEncoder
, skal kategorierne for hver kolonne angives eksplicit. Dette gøres via argumentet categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Hvilken erklæring beskriver bedst brugen af OrdinalEncoder
til håndtering af kategoriske data i et datasæt?
2. Antag, at du har en kategorisk kolonne ved navn 'Color'
. Ville det være passende at bruge OrdinalEncoder
til at kode dens værdier?
Tak for dine kommentarer!