Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

La codifica categorica è una tecnica per codificare i dati categorici. Tenete a mente che i dati categorici sono gli insiemi di variabili che contengono variabili etichetta invece di valori numerici. Molti algoritmi di apprendimento automatico non sono in grado di elaborare le variabili categoriche. Pertanto, è importante codificare i dati in una forma adatta in modo da poter preprocessare queste variabili. Poiché è necessario adattare e valutare il modello, è necessario codificare i dati categorici e convertire tutte le variabili di input e di output in numeriche. Di conseguenza, il modello sarà in grado di comprendere ed estrarre le informazioni generando l’output desiderato. Un diverso insieme di dati varia a seconda del numero di valori possibili.

La maggior parte delle variabili categoriche sono nominali. Queste variabili aiutano a categorizzare ed etichettare gli attributi. Le variabili contengono diversi valori, e ogni valore rappresenta una categoria separata. Per esempio, il colore è una variabile, e include diversi valori come blu, verde, giallo. Allo stesso modo, un animale domestico è una variabile, ma gatti e cani sono valori separati che rappresentano categorie diverse. In un altro esempio, un luogo è una variabile, ma il primo, il secondo e il terzo sono i valori. Queste categorie possono avere o meno una relazione naturale tra loro. Nell’esempio precedente di un luogo, potete vedere che il luogo è una variabile e le sue categorie sono nell’ordine naturale. Ci si può riferire a questi tipi di variabili come variabili ordinali.

Convertire i dati delle etichette in numerici

Ci sono due passi per convertire i dati delle etichette o categorici in dati numerici:

1. Codifica dei numeri interi

In questo primo passo, assegnerete il valore intero per ogni valore di categoria. Per esempio, il blu è 1, il verde è 2 e il giallo è 3. Puoi facilmente invertire questo tipo di codifica. Potete anche riferirvi alla codifica dei numeri interi come codifica delle etichette. Per molte variabili, questo passo è sufficiente per elaborare il modello. C’è una naturale relazione ordinata tra diversi valori interi. È possibile collegare la relazione attraverso un algoritmo di apprendimento automatico. Per esempio, se si considerano le variabili ordinali come il luogo, le categorie sono già in ordine. Pertanto, non è necessario trovare la relazione tra le variabili. Quindi, la codifica delle etichette sarebbe sufficiente.

2. Codifica a un solo punto

Le variabili categoriche non includono alcuna relazione tra le variabili come le variabili ordinali. Pertanto, è necessario portare il processo di codifica ad un altro livello. Per questi tipi di dati, la codifica intera non è sufficiente. Anche se si codificano i dati senza ordine naturale, le categorie non si allineeranno tra loro. A causa delle scarse prestazioni, il risultato sarà inaspettato.

Successivamente, la codifica one-hot è una tecnica da applicare alla rappresentazione dei numeri interi. Durante la codifica dei dati utilizzando durante questo passo, il modello rimuoverà le variabili intere. Poi, includerà una nuova variabile binaria per ogni valore intero unico. Per esempio, se consideriamo la variabile colore, è necessario codificare 3 categorie. Per ottenere questo risultato, si metterà il valore “1” per la variabile binaria del colore e “0” per le altre.

Come codificare una codifica a caldo

Potete capire il processo di codifica con il seguente esempio. Per rendere i compiti semplici e veloci, dovreste usare le librerie. Le librerie sono codici pre-scritti che aiutano ad ottimizzare i vostri compiti. Senza l’uso di librerie rilevanti, i vostri compiti diventeranno noiosi. Iniziate includendo tre librerie comuni nel progetto. Queste librerie sono sklearn, NumPy e pandas.

da sklearn.preprocessing importa LabelEncoder, OneHotEncoder
importa NumPy come np
importare pandas come pd

Una volta che vi siete attrezzati con gli strumenti, potete iniziare a codificare. Per capire il concetto, usate questo set di dati inventato. Usa la libreria panda per inserire il set di dati. Userai .read_csv e il nome del file per aprire il file.

dataset = pd.read_csv(‘made_up_thing.csv’)

Fino ad ora, avete eseguito compiti auto-esplicativi. Tuttavia, il prossimo passo sarà un po’ più complicato. Quando si considera un foglio di calcolo come input, ci si preoccupa o meno di alcune colonne. Per mantenere il processo semplice, accettiamo tutte le colonne tranne l’ultima. Dopo aver considerato le colonne da includere, aggiungiamo il .iloc. È una caratteristica della libreria di pandas. La utilizzerete per scegliere i dati di una specifica colonna.

X = dataset.iloc[:, :-1].values

Dopo aver selezionato il segmento, nel codice di cui sopra, includeremo i valori utilizzando la funzione .values. Potete capirlo come la prima parte di questo codice selezionerà i valori, e la seconda parte considererà i valori in questa sezione.

In questo esempio, si include un codificatore di etichette insieme a un codificatore a caldo. Poiché un codificatore a caldo converte i numeri in binario, e voi includete le categorie come dati, dovete prima convertire le categorie in numeri. Pertanto, useremo un codificatore di etichette prima di un codificatore a caldo. Ora impostate il codificatore di etichette usando il seguente codice:

le = LabelEncoder()

Dopo aver convertito le categorie in numeri usate la funzione .fit_transform di sklearn. Poiché sklearn è una libreria di codifica one-hot, convertirà quei numeri in binario in modo che il modello possa capire. Usate il seguente codice per codificare le prime colonne:

X[:, 0] = le.fit_transform(X[:, 0])

Ora dovresti includere un codificatore di codice per completare la codifica.

ohe = OneHotEncoder(categorical_features = [0])
X = ohe.fit_transform(X).toarray()

Categorical_features è una funzione per specificare la colonna da codificare con la codifica one-hot. Poiché stiamo codificando la prima colonna, includiamo [0]. Ora la funzione fit_transform convertirà le variabili selezionate in binarie.

Abbiamo finito con la conversione. Tenete a mente che includiamo 0 per la prima colonna. Se volete includere più colonne, dovete aggiungere il numero della colonna. Per aggiungere più di una colonna, dovreste aggiungere un “ciclo for” come segue:

le = LabelEncoder()#per 10 colonne
per i in range(10):
X[:,i] = le.fit_transform(X[:,i])

Conclusione

Per riassumere, la codifica categorica è una tecnica che converte i dati categorici in binari. Poiché il modello di apprendimento automatico non può elaborare dati categorici, è necessario convertirli in numerici o binari, a seconda dell’algoritmo. Ci sono due fasi per convertire i dati categorici o di etichetta in dati binari. La codifica delle etichette è la prima tecnica per la codifica categorica. Trasforma i dati in forma numerica. Usa la codifica delle etichette per i dati ordinali. Per i dati non ordinali, usate la tecnica di codifica one-hot. Questo è un metodo efficace per convertire i dati in forma binaria.