Codificatore Ordinale
Il prossimo aspetto da affrontare riguarda i dati categorici. Esistono due principali tipologie di variabili categoriche.
I dati ordinali presentano un ordine naturale, mentre i dati nominali ne sono privi. Grazie a questo ordine, le categorie possono essere codificate come numeri in base alla loro posizione nella classifica.
Ad esempio, una colonna 'rate' con i valori 'Terrible', 'Bad', 'OK', 'Good' e 'Great' può essere codificata come:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Per codificare i dati ordinali, si utilizza OrdinalEncoder. Questo trasforma le categorie in numeri interi a partire da 0.
OrdinalEncoder viene applicato nello stesso modo degli altri trasformatori. La principale difficoltà consiste nel specificare correttamente l'argomento categories.
Ad esempio, si consideri un dataset (diverso dal dataset penguins) che contiene una colonna 'education'. Il primo passo è verificare i suoi valori unici.
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())
È necessario creare un elenco ordinato di valori categorici, che va da 'HS-grad' a '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'])
Durante la trasformazione di più caratteristiche con OrdinalEncoder, è necessario specificare esplicitamente le categorie per ciascuna colonna. Questo viene fatto tramite l'argomento categories:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Quale affermazione descrive meglio l'utilizzo di OrdinalEncoder per la gestione dei dati categorici in un dataset?
2. Supponiamo di avere una colonna categorica chiamata 'Color'. Sarebbe appropriato utilizzare OrdinalEncoder per codificare i suoi valori?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain the difference between ordinal and nominal data in more detail?
How do I determine the correct order for ordinal categories?
What happens if I don't specify the categories argument correctly in OrdinalEncoder?
Awesome!
Completion rate improved to 3.13
Codificatore Ordinale
Scorri per mostrare il menu
Il prossimo aspetto da affrontare riguarda i dati categorici. Esistono due principali tipologie di variabili categoriche.
I dati ordinali presentano un ordine naturale, mentre i dati nominali ne sono privi. Grazie a questo ordine, le categorie possono essere codificate come numeri in base alla loro posizione nella classifica.
Ad esempio, una colonna 'rate' con i valori 'Terrible', 'Bad', 'OK', 'Good' e 'Great' può essere codificata come:
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Per codificare i dati ordinali, si utilizza OrdinalEncoder. Questo trasforma le categorie in numeri interi a partire da 0.
OrdinalEncoder viene applicato nello stesso modo degli altri trasformatori. La principale difficoltà consiste nel specificare correttamente l'argomento categories.
Ad esempio, si consideri un dataset (diverso dal dataset penguins) che contiene una colonna 'education'. Il primo passo è verificare i suoi valori unici.
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())
È necessario creare un elenco ordinato di valori categorici, che va da 'HS-grad' a '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'])
Durante la trasformazione di più caratteristiche con OrdinalEncoder, è necessario specificare esplicitamente le categorie per ciascuna colonna. Questo viene fatto tramite l'argomento categories:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Quale affermazione descrive meglio l'utilizzo di OrdinalEncoder per la gestione dei dati categorici in un dataset?
2. Supponiamo di avere una colonna categorica chiamata 'Color'. Sarebbe appropriato utilizzare OrdinalEncoder per codificare i suoi valori?
Grazie per i tuoi commenti!