from sklearn.preprocessing import OneHotEncoder
import numpy as np

# Dati di esempio
# Colore di alcuni prodotti: variabile categorica nominale (nessun ordine)
dati = np.array(['Rosso', 'Blu', 'Verde', 'Blu'])[:, None]  # reshape a colonna 2D

# Creazione e addestramento dell'encoder
one_hot_encoder = OneHotEncoder(sparse_output=False)
one_hot_encoder.fit(dati)  # apprende le categorie uniche presenti nei dati

# Trasformazione e ispezione del risultato
dati_codificati = one_hot_encoder.transform(dati)
nomi_colonne = one_hot_encoder.get_feature_names_out(['colore'])

print("Colonne generate:", nomi_colonne)
print("Dati codificati:\n", dati_codificati)

# Gestione di categorie sconosciute in nuovi dati
encoder_robusto = OneHotEncoder(sparse_output=False, handle_unknown='ignore')
encoder_robusto.fit(dati)

nuovi_dati = np.array(['Giallo'])[:, None]  # categoria mai vista in training
print("Categoria sconosciuta codificata:\n", encoder_robusto.transform(nuovi_dati))