Preparazione dei dati di addestramento: l’encoding

Preparazione dei dati di addestramento: l’encoding

Condividi con i tuoi amici...

Il dataset di addestramento pur trovandosi all’interno di un file CSV o di una tabella di un database, può non essere nella forma idonea per alimentare un algoritmo di addestramento.

Gli algoritmi di clustering o di linear regression lavorano su vettori che altro non sono che oggetti formati da una sequenza di valori numerici. In una tabella, ogni riga corrisponde ad un vettore e i valori di ogni colonna ad essa associata costituiscono le componenti numeriche del vettore.

in questo esempio di tabella il primo vettore è [83, 74, 62, 29, 57, 59, 86, 28, 26, 31]

Poichè in generale una tabella non contiene solo valori numerici ma anche oggetti alfanumerici è necessario trasformare i dati in modo da ottenere un dataset gestibile dall’algoritmo.

Per esempio se si ha una tabella come questa:

è necessario impiegare un sistema di codifica per trasformare gli oggetti alfanumerici in valori numerici adatti per effettuare una regressione lineare o calcolare la distanza nell’ambito di un algoritmo di clustering.

Ecco il codice python che impiega la classe LabelEncoder di sklearn per l’operazione di codifica delle colonne non numeriche:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

def carica_dataset(db):
    return pd.read_csv(db, delimiter=';')

def converti_variabili_categoriche(df):
    label_encoder = LabelEncoder()
    encoded_df = df.copy()
    for col in encoded_df.columns:
        if encoded_df[col].dtype == 'object':
           encoded_df[col] = label_encoder.fit_transform(encoded_df[col])
    return encoded_df

# Carica il dataset da un file CSV
df = carica_dataset('db.csv')

# Esegue la conversione delle variabili categoriche
encoded_df = converti_variabili_categoriche(df)

# Imposta l'opzione per visualizzare tutte le colonne
pd.set_option('display.max_columns', None)

# Stampa i dataframe
print(encoded_df)

OUTPUT