I pregi, i difetti e gli aspetti negativi di Pd.Get_Dummies

Pd.Get_Dummies pros, cons, and negatives.

Questo è per gli appassionati di pd.get_dummies

Ciao a tutti 🤠

Okay, ho capito. Uno dei modi più semplici per convertire una variabile categorica in un array di variabili dummy in Python è con il metodo pd.get_dummies() di Pandas. Perché perdere tempo importando OneHotEncoder da sklearn, eseguendo un .fit_transform() eccetera, eccetera, eccetera? Parliamo di noia!

In questo articolo verrà prima introdotto un semplice set di dati a scopo dimostrativo che consiste in un set di test che contiene variabili categoriche non presenti nel set di addestramento. Successivamente, verrà dimostrato come l’utilizzo di pd.get_dummies() possa causare problemi con i dati dimostrativi. E infine, mostrerà come evitare tale problema con OneHotEncoder di sklearn.

Un set di dati semplice per la dimostrazione

Ecco un semplice set di dati che include una variabile categorica chiamata OS. La colonna OS elenca i sistemi operativi dei computer. Utilizzeremo questi dati fittizi a scopo dimostrativo. In train_df ci saranno i dati di addestramento di dimostrazione fittizi. Mentre in test_df avremo i dati di test di dimostrazione fittizi.

Nel nostro caso di dimostrazione fittizio, il set di test contiene valori categorici non presenti nel set di addestramento. Questa discrepanza causerà dei problemi.

import pandas as pdtrain_df = pd.DataFrame({'OS': ['Windows', 'MacOS',                                 'Linux', 'Windows', 'MacOS']})test_df = pd.DataFrame({'OS': ['Windows', 'MacOS',                                'Android', 'Unix' 'iOS']})

Nel nostro set di dati di addestramento, abbiamo tre sistemi operativi: Windows, MacOS e Linux. Ma nel nostro set di dati di test, abbiamo le categorie aggiuntive tra cui Android, Unix e iOS.

Un modello addestrato su train_df.get_dummies() non funzionerà con i dati di test da test_df.get_dummies(). I risultati non corrispondono.

Image Credit: illustrazione dell'autore creata in Canva usando immagini di Canva stock. Un manichino per forniture artistiche.

Il problema con pd.get_dummies()

Quando si applica la funzione pd.get_dummies() sia ai dati di addestramento che ai dati di test, ecco cosa otterrete.