Codificatore Ordinale
Il prossimo problema da affrontare riguarda i dati categorici. Esistono due principali tipi di variabili categoriche.
I dati ordinali hanno un ordine naturale, mentre i dati nominali non lo hanno. Grazie a questo ordine, le categorie possono essere codificate come numeri secondo la loro posizione.
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 nello 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'])
Quando si trasformano più caratteristiche con OrdinalEncoder
, le categorie per ogni colonna devono essere specificate esplicitamente. 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 codificarne i 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
Awesome!
Completion rate improved to 3.13
Codificatore Ordinale
Scorri per mostrare il menu
Il prossimo problema da affrontare riguarda i dati categorici. Esistono due principali tipi di variabili categoriche.
I dati ordinali hanno un ordine naturale, mentre i dati nominali non lo hanno. Grazie a questo ordine, le categorie possono essere codificate come numeri secondo la loro posizione.
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 nello 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'])
Quando si trasformano più caratteristiche con OrdinalEncoder
, le categorie per ogni colonna devono essere specificate esplicitamente. 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 codificarne i valori?
Grazie per i tuoi commenti!