Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

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.