Codifica 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']])
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']])
Sebbene la codifica one-hot eviti di imporre un ordine e sia adatta a caratteristiche nominali, può aumentare la dimensionalità dei dati.
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 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
Codifica 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']])
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']])
Sebbene la codifica one-hot eviti di imporre un ordine e sia adatta a caratteristiche nominali, può aumentare la dimensionalità dei dati.
Grazie per i tuoi commenti!