Preparazione dei dati di addestramento: l’encoding
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

