Regresja logistyczna w Pythonie - szybki przewodnik
Regresja logistyczna to statystyczna metoda klasyfikacji obiektów. W tym rozdziale przedstawiono wprowadzenie do regresji logistycznej z pomocą kilku przykładów.
Klasyfikacja
Aby zrozumieć regresję logistyczną, powinieneś wiedzieć, co oznacza klasyfikacja. Rozważmy następujące przykłady, aby lepiej to zrozumieć -
- Lekarz klasyfikuje guz jako złośliwy lub łagodny.
- Transakcja bankowa może być fałszywa lub autentyczna.
Od wielu lat ludzie wykonują takie zadania - aczkolwiek są podatni na błędy. Pytanie brzmi, czy możemy przeszkolić maszyny do wykonywania tych zadań z większą dokładnością?
Jednym z przykładów maszyny dokonującej klasyfikacji jest e-mail Clientna twoim komputerze, który klasyfikuje każdą przychodzącą pocztę jako „spam” lub „nie spam” i robi to z dość dużą dokładnością. Statystyczna technika regresji logistycznej została z powodzeniem zastosowana w kliencie pocztowym. W tym przypadku przeszkoliliśmy naszą maszynę, aby rozwiązać problem klasyfikacji.
Regresja logistyczna to tylko jeden z elementów uczenia maszynowego używanego do rozwiązywania tego rodzaju problemu klasyfikacji binarnej. Istnieje kilka innych technik uczenia maszynowego, które zostały już opracowane i są stosowane w praktyce do rozwiązywania innych rodzajów problemów.
Jeśli zauważyłeś, we wszystkich powyższych przykładach wynik orzeczenia ma tylko dwie wartości - Tak lub Nie. Nazywamy je klasami - aby powiedzieć, że nasz klasyfikator klasyfikuje obiekty w dwie klasy. Z technicznego punktu widzenia możemy powiedzieć, że zmienna wynikowa lub docelowa ma charakter dychotomiczny.
Istnieją inne problemy klasyfikacyjne, w których wynik można podzielić na więcej niż dwie klasy. Na przykład, mając kosz pełen owoców, jesteś proszony o oddzielenie różnych rodzajów owoców. Teraz koszyk może zawierać pomarańcze, jabłka, mango i tak dalej. Więc kiedy oddzielasz owoce, dzielisz je na więcej niż dwie klasy. Jest to problem klasyfikacji wielowymiarowej.
Weź pod uwagę, że bank zwraca się do Ciebie z prośbą o opracowanie aplikacji do uczenia maszynowego, która pomoże mu zidentyfikować potencjalnych klientów, którzy otworzą u nich lokatę terminową (w niektórych bankach nazywaną również lokatą stałą). Bank regularnie przeprowadza ankietę za pomocą połączeń telefonicznych lub formularzy internetowych w celu zebrania informacji o potencjalnych klientach. Badanie ma charakter ogólny i jest przeprowadzane na bardzo dużej grupie odbiorców, z których wielu może nie być zainteresowanych współpracą z tym bankiem. Z pozostałych tylko nieliczni mogą być zainteresowani założeniem Lokaty Terminowej. Inni mogą być zainteresowani innymi udogodnieniami oferowanymi przez bank. Tak więc badanie niekoniecznie jest przeprowadzane w celu zidentyfikowania klientów otwierających TD. Twoim zadaniem jest zidentyfikowanie wszystkich klientów z dużym prawdopodobieństwem otwarcia TD na podstawie ogromnych danych ankietowych, które bank zamierza Ci udostępnić.
Na szczęście jeden taki rodzaj danych jest publicznie dostępny dla osób aspirujących do tworzenia modeli uczenia maszynowego. Dane te zostały przygotowane przez niektórych studentów UC Irvine przy wsparciu finansowym. Baza jest dostępna w ramachUCI Machine Learning Repositoryi jest szeroko stosowany przez studentów, nauczycieli i badaczy na całym świecie. Dane można pobrać stąd .
W następnych rozdziałach zajmiemy się teraz tworzeniem aplikacji przy użyciu tych samych danych.
W tym rozdziale szczegółowo poznamy proces tworzenia projektu w celu wykonania regresji logistycznej w Pythonie.
Instalowanie Jupyter
Będziemy używać Jupyter - jednej z najczęściej używanych platform do uczenia maszynowego. Jeśli nie masz zainstalowanego Jupytera na swoim komputerze, pobierz go stąd . Aby zainstalować, możesz postępować zgodnie z instrukcjami na ich stronie, aby zainstalować platformę. Jak sugeruje witryna, możesz preferować użycieAnaconda Distributionktóry jest dostarczany wraz z Pythonem i wieloma powszechnie używanymi pakietami Pythona do obliczeń naukowych i nauki o danych. Zmniejszy to potrzebę instalowania tych pakietów indywidualnie.
Po pomyślnej instalacji Jupytera rozpocznij nowy projekt, twój ekran na tym etapie wyglądałby tak, jakby był gotowy do zaakceptowania twojego kodu.
Teraz zmień nazwę projektu z Untitled1 to “Logistic Regression” klikając nazwę tytułu i edytując ją.
Najpierw zaimportujemy kilka pakietów Pythona, których będziemy potrzebować w naszym kodzie.
Importowanie pakietów Pythona
W tym celu wpisz lub wytnij i wklej następujący kod w edytorze kodu -
In [1]: # import statements
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import preprocessing
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
Twój Notebook na tym etapie powinien wyglądać następująco -
Uruchom kod, klikając plik Runprzycisk. Jeśli nie zostaną wygenerowane żadne błędy, pomyślnie zainstalowałeś Jupyter i jesteś teraz gotowy do dalszej części rozwoju.
Pierwsze trzy instrukcje importu importują pandy, pakiety numpy i matplotlib.pyplot w naszym projekcie. Następne trzy instrukcje importują określone moduły ze sklearn.
Naszym kolejnym zadaniem jest pobranie danych wymaganych dla naszego projektu. Dowiemy się tego w następnym rozdziale.
W tym rozdziale omówiono szczegółowo kroki związane z uzyskiwaniem danych do wykonania regresji logistycznej w Pythonie.
Pobieranie zbioru danych
Jeśli wcześniej nie pobrałeś zbioru danych UCI, pobierz go teraz stąd . Kliknij folder danych. Zobaczysz następujący ekran -
Pobierz plik bank.zip klikając w podany link. Plik zip zawiera następujące pliki -
Do opracowania modelu użyjemy pliku bank.csv. Plik bank-names.txt zawiera opis bazy danych, której będziesz potrzebować później. Bank-full.csv zawiera znacznie większy zbiór danych, którego możesz użyć do bardziej zaawansowanych opracowań.
Tutaj umieściliśmy plik bank.csv w źródłowym zipie do pobrania. Ten plik zawiera pola rozdzielane przecinkami. Dokonaliśmy również kilku modyfikacji w pliku. Zaleca się, aby do nauki używać pliku zawartego w źródłowym pliku ZIP projektu.
Ładowanie danych
Aby załadować dane z właśnie skopiowanego pliku csv, wpisz następującą instrukcję i uruchom kod.
In [2]: df = pd.read_csv('bank.csv', header=0)
Będziesz także mógł sprawdzić załadowane dane, uruchamiając następującą instrukcję kodu -
IN [3]: df.head()
Po uruchomieniu polecenia zobaczysz następujące dane wyjściowe -
Zasadniczo wydrukował pierwsze pięć wierszy załadowanych danych. Zbadaj 21 obecnych kolumn. Będziemy używać tylko kilku kolumn z nich do tworzenia naszego modelu.
Następnie musimy wyczyścić dane. Dane mogą zawierać wiersze z rozszerzeniemNaN. Aby wyeliminować takie wiersze, użyj następującego polecenia -
IN [4]: df = df.dropna()
Na szczęście plik bank.csv nie zawiera żadnych wierszy z NaN, więc w naszym przypadku ten krok nie jest wymagany. Jednak generalnie trudno jest znaleźć takie wiersze w ogromnej bazie danych. Dlatego zawsze bezpieczniej jest uruchomić powyższą instrukcję, aby wyczyścić dane.
Note - Możesz łatwo sprawdzić rozmiar danych w dowolnym momencie, używając następującego oświadczenia -
IN [5]: print (df.shape)
(41188, 21)
Liczba wierszy i kolumn zostanie wydrukowana w wyniku, jak pokazano w drugim wierszu powyżej.
Następną rzeczą do zrobienia jest zbadanie przydatności każdej kolumny do modelu, który próbujemy zbudować.
Za każdym razem, gdy jakakolwiek organizacja przeprowadza ankietę, stara się zebrać jak najwięcej informacji od klienta, z myślą, że te informacje będą przydatne dla organizacji w taki czy inny sposób, w późniejszym czasie. Aby rozwiązać bieżący problem, musimy zebrać informacje, które są bezpośrednio związane z naszym problemem.
Wyświetlanie wszystkich pól
Zobaczmy teraz, jak wybrać przydatne dla nas pola danych. Uruchom następującą instrukcję w edytorze kodu.
In [6]: print(list(df.columns))
Zobaczysz następujący wynik -
['age', 'job', 'marital', 'education', 'default', 'housing', 'loan',
'contact', 'month', 'day_of_week', 'duration', 'campaign', 'pdays',
'previous', 'poutcome', 'emp_var_rate', 'cons_price_idx', 'cons_conf_idx',
'euribor3m', 'nr_employed', 'y']
Dane wyjściowe zawierają nazwy wszystkich kolumn w bazie danych. Ostatnia kolumna „y” to wartość logiczna wskazująca, czy dany klient posiada lokatę terminową w banku. Wartości tego pola to „y” lub „n”. Możesz przeczytać opis i przeznaczenie każdej kolumny w pliku banks-name.txt, który został pobrany jako część danych.
Eliminowanie niechcianych pól
Badając nazwy kolumn, dowiesz się, że niektóre pola nie mają znaczenia dla rozpatrywanego problemu. Na przykład pola takie jakmonth, day_of_week, kampania itp. są dla nas bezużyteczne. Usuniemy te pola z naszej bazy danych. Aby upuścić kolumnę, używamy polecenia drop, jak pokazano poniżej -
In [8]: #drop columns which are not needed.
df.drop(df.columns[[0, 3, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19]],
axis = 1, inplace = True)
Polecenie mówi, że upuść kolumnę numer 0, 3, 7, 8 i tak dalej. Aby upewnić się, że indeks jest prawidłowo wybrany, użyj następującej instrukcji -
In [7]: df.columns[9]
Out[7]: 'day_of_week'
Wyświetla nazwę kolumny dla danego indeksu.
Po usunięciu kolumn, które nie są wymagane, sprawdź dane za pomocą instrukcji head. Wygląd ekranu jest pokazany tutaj -
In [9]: df.head()
Out[9]:
job marital default housing loan poutcome y
0 blue-collar married unknown yes no nonexistent 0
1 technician married no no no nonexistent 0
2 management single no yes no success 1
3 services married no no no nonexistent 0
4 retired married no yes no success 1
Teraz mamy tylko te pola, które uważamy za ważne dla naszej analizy danych i prognozowania. ZnaczenieData Scientistpojawia się na tym etapie. Naukowiec danych musi wybrać odpowiednie kolumny do budowy modelu.
Na przykład typ jobchoć na pierwszy rzut oka może nie przekonać wszystkich do umieszczenia w bazie, będzie to bardzo przydatne pole. Nie wszyscy klienci otworzą TD. Osoby o niższych dochodach mogą nie otwierać TD, podczas gdy osoby z wyższymi dochodami zazwyczaj umieszczają swoje nadwyżki w TD. W tym scenariuszu rodzaj pracy staje się więc znacząco istotny. Podobnie, uważnie wybierz kolumny, które Twoim zdaniem będą odpowiednie dla Twojej analizy.
W następnym rozdziale przygotujemy nasze dane do budowy modelu.
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.
Mamy około czterdziestu jeden tysięcy rekordów. Jeśli wykorzystamy całe dane do budowy modelu, nie pozostanie nam żadne dane do testowania. Więc ogólnie dzielimy cały zestaw danych na dwie części, powiedzmy 70/30 procent. 70% danych wykorzystujemy do budowy modeli, a resztę do testowania dokładności przewidywania stworzonego modelu. Możesz użyć innego współczynnika podziału zgodnie z wymaganiami.
Tworzenie tablicy funkcji
Zanim podzielimy dane, rozdzielamy dane na dwie tablice X i Y. Tablica X zawiera wszystkie cechy (kolumny danych), które chcemy przeanalizować, a tablica Y jest jednowymiarową tablicą wartości logicznych, która jest wynikiem przepowiednia. Aby to zrozumieć, uruchommy trochę kodu.
Najpierw wykonaj następującą instrukcję Pythona, aby utworzyć tablicę X -
In [17]: X = data.iloc[:,1:]
Aby zbadać zawartość X posługiwać się headwydrukować kilka wstępnych rekordów. Poniższy ekran przedstawia zawartość tablicy X.
In [18]: X.head ()
Tablica ma kilka wierszy i 23 kolumny.
Następnie utworzymy tablicę wyjściową zawierającą „y”Wartości.
Tworzenie tablicy wyjściowej
Aby utworzyć tablicę dla kolumny przewidywanej wartości, użyj następującej instrukcji Pythona -
In [19]: Y = data.iloc[:,0]
Sprawdź jego zawartość, dzwoniąc head. Poniższy ekran przedstawia wynik -
In [20]: Y.head()
Out[20]: 0 0
1 0
2 1
3 0
4 1
Name: y, dtype: int64
Teraz podziel dane za pomocą następującego polecenia -
In [21]: X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=0)
Spowoduje to utworzenie czterech tablic nazwanych X_train, Y_train, X_test, and Y_test. Tak jak poprzednio, możesz sprawdzić zawartość tych tablic, używając polecenia head. Będziemy używać tablic X_train i Y_train do uczenia naszego modelu oraz tablic X_test i Y_test do testowania i walidacji.
Teraz jesteśmy gotowi do zbudowania naszego klasyfikatora. Przyjrzymy się temu w następnym rozdziale.
Nie jest wymagane budowanie klasyfikatora od podstaw. Budowanie klasyfikatorów jest złożone i wymaga znajomości kilku dziedzin, takich jak statystyka, teorie prawdopodobieństwa, techniki optymalizacji itd. Na rynku dostępnych jest kilka gotowych bibliotek, które mają w pełni przetestowaną i bardzo wydajną implementację tych klasyfikatorów. Użyjemy jednego takiego gotowego modelu zsklearn.
Klasyfikator sklearn
Tworzenie klasyfikatora regresji logistycznej z zestawu narzędzi sklearn jest trywialne i odbywa się w pojedynczej instrukcji programu, jak pokazano tutaj -
In [22]: classifier = LogisticRegression(solver='lbfgs',random_state=0)
Po utworzeniu klasyfikatora przekażesz swoje dane treningowe do klasyfikatora, aby mógł dostroić swoje wewnętrzne parametry i być gotowym do przewidywania przyszłych danych. Aby dostroić klasyfikator, uruchamiamy następującą instrukcję -
In [23]: classifier.fit(X_train, Y_train)
Klasyfikator jest teraz gotowy do testów. Poniższy kod jest wynikiem wykonania powyższych dwóch instrukcji -
Out[23]: LogisticRegression(C = 1.0, class_weight = None, dual = False,
fit_intercept=True, intercept_scaling=1, max_iter=100,
multi_class='warn', n_jobs=None, penalty='l2', random_state=0,
solver='lbfgs', tol=0.0001, verbose=0, warm_start=False))
Teraz jesteśmy gotowi do przetestowania utworzonego klasyfikatora. Zajmiemy się tym w następnym rozdziale.
Musimy przetestować powyższy klasyfikator, zanim wprowadzimy go do użytku produkcyjnego. Jeśli testy wykażą, że model nie spełnia wymaganej dokładności, będziemy musieli cofnąć się do powyższego procesu, wybrać inny zestaw cech (pól danych), ponownie zbudować model i przetestować go. Będzie to krok iteracyjny, dopóki klasyfikator nie spełni wymagania wymaganej dokładności. Przetestujmy więc nasz klasyfikator.
Przewidywanie danych testowych
Aby przetestować klasyfikator, używamy danych testowych wygenerowanych na wcześniejszym etapie. Nazywamypredict na utworzonym obiekcie i przekaż plik X tablica danych testowych, jak pokazano w następującym poleceniu -
In [24]: predicted_y = classifier.predict(X_test)
Generuje to jednowymiarową tablicę dla całego zestawu danych uczących, podając prognozę dla każdego wiersza w tablicy X. Możesz sprawdzić tę tablicę za pomocą następującego polecenia -
In [25]: predicted_y
Poniżej przedstawiono dane wyjściowe po wykonaniu powyższych dwóch poleceń -
Out[25]: array([0, 0, 0, ..., 0, 0, 0])
Dane wyjściowe wskazują, że pierwszy i ostatni trzej klienci nie są potencjalnymi kandydatami na Term Deposit. Możesz zbadać całą tablicę, aby uporządkować potencjalnych klientów. Aby to zrobić, użyj następującego fragmentu kodu Pythona -
In [26]: for x in range(len(predicted_y)):
if (predicted_y[x] == 1):
print(x, end="\t")
Wynik uruchomienia powyższego kodu pokazano poniżej -
Dane wyjściowe pokazują indeksy wszystkich wierszy, które są prawdopodobnymi kandydatami do subskrybowania TD. Możesz teraz przekazać te dane wyjściowe zespołowi marketingowemu banku, który zbierze dane kontaktowe każdego klienta z wybranego wiersza i kontynuuje pracę.
Zanim wprowadzimy ten model do produkcji, musimy zweryfikować dokładność prognoz.
Weryfikacja dokładności
Aby przetestować dokładność modelu, użyj metody punktacji na klasyfikatorze, jak pokazano poniżej -
In [27]: print('Accuracy: {:.2f}'.format(classifier.score(X_test, Y_test)))
Ekran wyjściowy uruchomienia tego polecenia pokazano poniżej -
Accuracy: 0.90
Pokazuje, że dokładność naszego modelu wynosi 90%, co w większości zastosowań jest uważane za bardzo dobre. Dlatego nie jest wymagane dalsze strojenie. Teraz nasz klient jest gotowy do uruchomienia kolejnej kampanii, uzyskania listy potencjalnych klientów i ścigania ich za otwarcie TD z prawdopodobnie wysokim wskaźnikiem sukcesu.
Jak widać na powyższym przykładzie, zastosowanie regresji logistycznej do uczenia maszynowego nie jest trudnym zadaniem. Jednak ma swoje własne ograniczenia. Regresja logistyczna nie będzie w stanie obsłużyć dużej liczby cech kategorialnych. W omawianym dotychczas przykładzie w bardzo dużym stopniu zmniejszyliśmy liczbę funkcji.
Gdyby jednak te cechy były ważne w naszej prognozie, bylibyśmy zmuszeni je uwzględnić, ale wtedy regresja logistyczna nie zapewniłaby nam dobrej dokładności. Regresja logistyczna jest również podatna na nadmierne dopasowanie. Nie można go zastosować do problemu nieliniowego. Będzie działać słabo ze zmiennymi niezależnymi, które nie są skorelowane z celem i są ze sobą skorelowane. Dlatego będziesz musiał dokładnie ocenić przydatność regresji logistycznej do problemu, który próbujesz rozwiązać.
Istnieje wiele obszarów uczenia maszynowego, w których wymyślono inne techniki. Aby wymienić tylko kilka, mamy algorytmy, takie jak k-najbliższych sąsiadów (kNN), regresja liniowa, maszyny wektorów nośnych (SVM), drzewa decyzyjne, Bayes naiwny i tak dalej. Przed finalizacją na konkretnym modelu będziesz musiał ocenić przydatność tych różnych technik do problemu, który próbujemy rozwiązać.
Regresja logistyczna to statystyczna technika klasyfikacji binarnej. W tym samouczku nauczyłeś się, jak wyszkolić maszynę do korzystania z regresji logistycznej. Tworząc modele uczenia maszynowego, najważniejszym wymaganiem jest dostępność danych. Bez odpowiednich i istotnych danych nie można po prostu zmusić maszyny do uczenia się.
Gdy masz już dane, następnym ważnym zadaniem jest wyczyszczenie danych, wyeliminowanie niechcianych wierszy, pól i wybranie odpowiednich pól do opracowania modelu. Po wykonaniu tej czynności musisz zmapować dane do formatu wymaganego przez klasyfikator do jego uczenia. Dlatego przygotowanie danych jest głównym zadaniem w każdej aplikacji do uczenia maszynowego. Gdy jesteś gotowy z danymi, możesz wybrać określony typ klasyfikatora.
W tym samouczku dowiedziałeś się, jak używać klasyfikatora regresji logistycznej udostępnionego w sklearnbiblioteka. Aby wytrenować klasyfikator, używamy około 70% danych do uczenia modelu. Resztę danych wykorzystujemy do testów. Testujemy dokładność modelu. Jeśli to nie mieści się w dopuszczalnych granicach, wracamy do wyboru nowego zestawu funkcji.
Ponownie prześledź cały proces przygotowania danych, wytrenuj model i testuj, aż będziesz zadowolony z jego dokładności. Przed podjęciem jakiegokolwiek projektu związanego z uczeniem maszynowym musisz się nauczyć i mieć kontakt z szeroką gamą technik, które zostały opracowane do tej pory i zostały z powodzeniem zastosowane w branży.