Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Codifica delle Caratteristiche Categorical | Concetti Fondamentali
Analisi dei Cluster

bookCodifica delle Caratteristiche Categorical

Gli algoritmi di clustering come K-means richiedono dati numerici. Le caratteristiche categoriche devono essere convertite in forma numerica tramite codifica. Verranno illustrati la codifica ordinale e la one-hot encoding.

Codifica Ordinale

La codifica ordinale trasforma categorie ordinate in valori numerici, preservando il loro ordine gerarchico. Ad esempio, la codifica ordinale della colonna 'education_level' trasformerà i suoi valori da "High School", "Bachelor's", "Master's", 'PhD' a 0, 1, 2, 3.

Questo presuppone una differenza numerica significativa tra i valori codificati, che potrebbe non essere sempre corretta.

from sklearn.preprocessing import OrdinalEncoder

education_levels = [['High School',
                     "Bachelor's",
                     "Master's",
                     "PhD"]]
encoder = OrdinalEncoder(categories=education_levels)

df[['education_encoded']] = encoder.fit_transform(df[['education_level']]) 
Note
Nota

Questa codifica dovrebbe essere utilizzata solo per caratteristiche ordinali in cui l'ordine delle categorie è rilevante.

Codifica One-Hot

La codifica one-hot converte le categorie nominali (senza ordine) in colonne binarie, dove ogni categoria diventa una nuova colonna. Per una caratteristica con n categorie, questo di solito crea n colonne: una colonna è 1 per la categoria corrispondente, le altre sono 0. Tuttavia, sono necessarie solo n-1 colonne per rappresentare l'informazione senza ridondanza.

Ad esempio, una colonna 'color' con valori 'red', 'blue' e 'green' può essere codificata con solo due colonne: 'color_red' e 'color_blue'. Se una riga ha 0 in entrambe, significa che il colore è 'green'. Eliminando una colonna, si evita la ridondanza.

La rimozione della colonna ridondante è specificata tramite drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Nota

Sebbene la codifica one-hot eviti di imporre un ordine e sia adatta a caratteristiche nominali, può aumentare la dimensionalità dei dati.

question mark

Quale metodo di codifica è più adatto per una caratteristica categorica come 'country' con valori come "USA", "Canada" e "Germany", dove non esiste un ordine naturale?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain the difference between ordinal and one-hot encoding in more detail?

When should I use ordinal encoding versus one-hot encoding?

Can you give more examples of categorical features and how to encode them?

Awesome!

Completion rate improved to 2.94

bookCodifica delle Caratteristiche Categorical

Scorri per mostrare il menu

Gli algoritmi di clustering come K-means richiedono dati numerici. Le caratteristiche categoriche devono essere convertite in forma numerica tramite codifica. Verranno illustrati la codifica ordinale e la one-hot encoding.

Codifica Ordinale

La codifica ordinale trasforma categorie ordinate in valori numerici, preservando il loro ordine gerarchico. Ad esempio, la codifica ordinale della colonna 'education_level' trasformerà i suoi valori da "High School", "Bachelor's", "Master's", 'PhD' a 0, 1, 2, 3.

Questo presuppone una differenza numerica significativa tra i valori codificati, che potrebbe non essere sempre corretta.

from sklearn.preprocessing import OrdinalEncoder

education_levels = [['High School',
                     "Bachelor's",
                     "Master's",
                     "PhD"]]
encoder = OrdinalEncoder(categories=education_levels)

df[['education_encoded']] = encoder.fit_transform(df[['education_level']]) 
Note
Nota

Questa codifica dovrebbe essere utilizzata solo per caratteristiche ordinali in cui l'ordine delle categorie è rilevante.

Codifica One-Hot

La codifica one-hot converte le categorie nominali (senza ordine) in colonne binarie, dove ogni categoria diventa una nuova colonna. Per una caratteristica con n categorie, questo di solito crea n colonne: una colonna è 1 per la categoria corrispondente, le altre sono 0. Tuttavia, sono necessarie solo n-1 colonne per rappresentare l'informazione senza ridondanza.

Ad esempio, una colonna 'color' con valori 'red', 'blue' e 'green' può essere codificata con solo due colonne: 'color_red' e 'color_blue'. Se una riga ha 0 in entrambe, significa che il colore è 'green'. Eliminando una colonna, si evita la ridondanza.

La rimozione della colonna ridondante è specificata tramite drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Nota

Sebbene la codifica one-hot eviti di imporre un ordine e sia adatta a caratteristiche nominali, può aumentare la dimensionalità dei dati.

question mark

Quale metodo di codifica è più adatto per una caratteristica categorica come 'country' con valori come "USA", "Canada" e "Germany", dove non esiste un ordine naturale?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 2
some-alt