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
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!