Regressione logistica in Python - Preparazione dei dati

Per creare il classificatore, dobbiamo preparare i dati in un formato richiesto dal modulo di costruzione del classificatore. Prepariamo i dati facendoOne Hot Encoding.

Codifica dei dati

Discuteremo brevemente cosa si intende per codifica dei dati. Innanzitutto, eseguiamo il codice. Eseguire il comando seguente nella finestra del codice.

In [10]: # creating one hot encoding of the categorical columns.
data = pd.get_dummies(df, columns =['job', 'marital', 'default', 'housing', 'loan', 'poutcome'])

Come dice il commento, l'istruzione sopra creerà l'unica codifica a caldo dei dati. Vediamo cosa ha creato? Esamina i dati creati chiamati“data” stampando i record della testina nel database.

In [11]: data.head()

Vedrai il seguente output:

Per comprendere i dati di cui sopra, elencheremo i nomi delle colonne eseguendo il data.columns comando come mostrato di seguito -

In [12]: data.columns
Out[12]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed', 
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'job_unknown', 'marital_divorced', 'marital_married', 'marital_single', 
'marital_unknown', 'default_no', 'default_unknown', 'default_yes', 
'housing_no', 'housing_unknown', 'housing_yes', 'loan_no',
'loan_unknown', 'loan_yes', 'poutcome_failure', 'poutcome_nonexistent', 
'poutcome_success'], dtype='object')

Ora, spiegheremo come viene eseguita l'unica codifica a caldo da get_dummiescomando. La prima colonna nel database appena generato è il campo "y" che indica se questo client ha sottoscritto o meno un TD. Ora, esaminiamo le colonne che sono codificate. La prima colonna codificata è“job”. Nel database, troverai che la colonna "lavoro" ha molti valori possibili come "amministratore", "operaio", "imprenditore" e così via. Per ogni possibile valore, abbiamo una nuova colonna creata nel database, con il nome della colonna aggiunto come prefisso.

Pertanto, abbiamo colonne chiamate "job_admin", "job_blue-collar" e così via. Per ogni campo codificato nel nostro database originale, troverai un elenco di colonne aggiunte nel database creato con tutti i possibili valori che la colonna assume nel database originale. Esamina attentamente l'elenco delle colonne per capire come i dati vengono mappati su un nuovo database.

Comprensione della mappatura dei dati

Per comprendere i dati generati, stampiamo tutti i dati utilizzando il comando data. Di seguito viene mostrato l'output parziale dopo l'esecuzione del comando.

In [13]: data

La schermata sopra mostra le prime dodici righe. Se scorri ulteriormente verso il basso, vedrai che la mappatura viene eseguita per tutte le righe.

Un output della schermata parziale più in basso nel database viene mostrato qui per una rapida consultazione.

Per comprendere i dati mappati, esaminiamo la prima riga.

Dice che questo cliente non si è abbonato a TD come indicato dal valore nel campo "y". Indica anche che questo cliente è un cliente "operaio". Scorrendo orizzontalmente verso il basso, ti dirà che ha un “alloggio” e non ha preso “prestito”.

Dopo questa codifica a caldo, abbiamo bisogno di ulteriore elaborazione dei dati prima di poter iniziare a costruire il nostro modello.

Eliminare lo "sconosciuto"

Se esaminiamo le colonne nel database mappato, troverai la presenza di poche colonne che terminano con "sconosciuto". Ad esempio, esamina la colonna all'indice 12 con il seguente comando mostrato nello screenshot:

In [14]: data.columns[12]
Out[14]: 'job_unknown'

Ciò indica che il lavoro per il cliente specificato è sconosciuto. Ovviamente, non ha senso includere tali colonne nella nostra analisi e costruzione del modello. Pertanto, tutte le colonne con il valore "sconosciuto" dovrebbero essere eliminate. Questo viene fatto con il seguente comando:

In [15]: data.drop(data.columns[[12, 16, 18, 21, 24]], axis=1, inplace=True)

Assicurati di specificare i numeri di colonna corretti. In caso di dubbio, è possibile esaminare il nome della colonna in qualsiasi momento specificandone l'indice nel comando colonne come descritto in precedenza.

Dopo aver rilasciato le colonne indesiderate, puoi esaminare l'elenco finale di colonne come mostrato nell'output di seguito:

In [16]: data.columns
Out[16]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur', 
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed', 
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'marital_divorced', 'marital_married', 'marital_single', 'default_no', 
'default_yes', 'housing_no', 'housing_yes', 'loan_no', 'loan_yes',
'poutcome_failure', 'poutcome_nonexistent', 'poutcome_success'], 
dtype='object')

A questo punto, i nostri dati sono pronti per la costruzione del modello.