Regresja logistyczna w Pythonie - przygotowywanie danych

Do stworzenia klasyfikatora musimy przygotować dane w formacie, o który prosi moduł budujący klasyfikator. Dane przygotowujemy wykonującOne Hot Encoding.

Kodowanie danych

Pokrótce omówimy, co rozumiemy przez kodowanie danych. Najpierw uruchommy kod. Uruchom następujące polecenie w oknie kodu.

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

Jak mówi komentarz, powyższe stwierdzenie stworzy jedyne gorące kodowanie danych. Zobaczmy, co stworzył? Sprawdź utworzone dane o nazwie“data” drukując rekordy głowy w bazie danych.

In [11]: data.head()

Zobaczysz następujący wynik -

Aby zrozumieć powyższe dane, wyszczególnimy nazwy kolumn, uruchamiając data.columns polecenie, jak pokazano poniżej -

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')

Teraz wyjaśnimy, jak jedno gorące kodowanie jest wykonywane przez get_dummiesKomenda. Pierwsza kolumna w nowo wygenerowanej bazie danych to pole „y”, które wskazuje, czy klient subskrybował TD, czy nie. Spójrzmy teraz na zakodowane kolumny. Pierwsza zakodowana kolumna to“job”. W bazie danych zobaczysz, że kolumna „praca” zawiera wiele możliwych wartości, takich jak „administrator”, „pracownik fizyczny”, „przedsiębiorca” i tak dalej. Dla każdej możliwej wartości mamy utworzoną nową kolumnę w bazie danych, z dodaną nazwą kolumny jako przedrostkiem.

Dlatego mamy kolumny o nazwach „job_admin”, „job_blue-collar” i tak dalej. Dla każdego zakodowanego pola w naszej oryginalnej bazie danych znajdziesz listę kolumn dodanych do utworzonej bazy danych wraz ze wszystkimi możliwymi wartościami, które ta kolumna przyjmuje w oryginalnej bazie danych. Dokładnie przejrzyj listę kolumn, aby zrozumieć, w jaki sposób dane są mapowane do nowej bazy danych.

Zrozumienie mapowania danych

Aby zrozumieć wygenerowane dane, wydrukujmy całe dane za pomocą polecenia data. Częściowe wyjście po uruchomieniu polecenia pokazano poniżej.

In [13]: data

Powyższy ekran przedstawia pierwsze dwanaście rzędów. Jeśli przewiniesz dalej w dół, zobaczysz, że mapowanie jest wykonane dla wszystkich wierszy.

Część danych wyjściowych ekranu w dalszej części bazy danych jest pokazana tutaj w celu szybkiego odniesienia.

Aby zrozumieć zmapowane dane, przeanalizujmy pierwszy wiersz.

Mówi, że ten klient nie subskrybował TD, jak wskazuje wartość w polu „y”. Wskazuje również, że jest to klient „fizyczny”. Przewijając w dół poziomo, zobaczysz, że ma on „mieszkanie” i nie wziął „kredytu”.

Po tym jednym gorącym kodowaniu potrzebujemy więcej przetwarzania danych, zanim będziemy mogli rozpocząć budowanie naszego modelu.

Porzucenie „nieznanego”

Jeśli zbadamy kolumny w zmapowanej bazie danych, zauważysz obecność kilku kolumn kończących się na „nieznane”. Na przykład zbadaj kolumnę pod indeksem 12 za pomocą następującego polecenia pokazanego na zrzucie ekranu -

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

Oznacza to, że zadanie dla określonego klienta jest nieznane. Oczywiście nie ma sensu włączać takich kolumn do naszej analizy i budowania modelu. Dlatego wszystkie kolumny z wartością „nieznana” powinny zostać usunięte. Odbywa się to za pomocą następującego polecenia -

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

Upewnij się, że podałeś prawidłowe numery kolumn. W razie wątpliwości możesz w dowolnym momencie sprawdzić nazwę kolumny, określając jej indeks w poleceniu kolumny, jak opisano wcześniej.

Po usunięciu niepożądanych kolumn możesz sprawdzić ostateczną listę kolumn, jak pokazano w wynikach poniżej -

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')

W tym momencie nasze dane są gotowe do budowy modelu.