Trasformare variabili categoriche
Trasformare variabili categoriche in numeriche
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.