Machine learning

Trasformare variabili categoriche

Trasformare variabili categoriche in numeriche <br> One hot encoding, codifica Cardinale

Per trasformare una variabile categorica in una variabile numerica in Python, possiamo utilizzare due metodi comuni.

One-Hot Encoding

Questo metodo converte una variabile categorica in una serie di variabili binarie, dove ogni categoria diventa una nuova variabile binaria.
È utile quando non esiste un ordine intrinseco tra le categorie.

Codifica Cardinale

Questo metodo assegna un numero unico a ogni categoria.
È adatto quando c'è un ordine intrinseco tra le categorie.

Un esempio di come implementare entrambi i metodi in Python utilizzando il dataset Iris.



import pandas as pd
from sklearn.preprocessing import OneHotEncoder, LabelEncoder

# Carica il dataset Iris
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = pd.read_csv(url, names=names)

# Visualizza il dataset prima della trasformazione
print("Dataset prima della trasformazione:")
print(dataset.head())

# One-Hot Encoding
onehot_encoder = OneHotEncoder(sparse=False)
onehot_encoded = onehot_encoder.fit_transform(dataset[['class']])
onehot_df = pd.DataFrame(onehot_encoded, columns=onehot_encoder.get_feature_names_out(['class']))
dataset_onehot = pd.concat([dataset.drop(columns=['class']), onehot_df], axis=1)

# Visualizza il dataset dopo One-Hot Encoding
print("\nDataset dopo One-Hot Encoding:")
print(dataset_onehot.head())

# Codifica Cardinal
label_encoder = LabelEncoder()
label_encoded = label_encoder.fit_transform(dataset['class'])
dataset_label = dataset.copy()
dataset_label['class'] = label_encoded

# Visualizza il dataset dopo la Codifica Cardinal
print("\nDataset dopo la Codifica Cardinal:")
print(dataset_label.head())

In questo esempio, stiamo usando il dataset Iris.
Prima di applicare la trasformazione, visualizziamo il dataset originale.
Poi, applichiamo entrambi i metodi di encoding e mostriamo il dataset trasformato.

Livio Bollini
Walter Livio Bollini

Matematico & Informatico · Intelligenza Artificiale · Sviluppo Web