W trakcie laboratorium uczymy się wygrywać w telewizyjnych teleturniejach, zgadywać do jakiej gromady należą nietoperze, ale też poznajemy naiwny klasyfikator Bayesa i sprawdzamy, jak ten model klasyfikatora zachowuje się na wybranych zbiorach danych.
Przećwiczmy co to znaczy na przykładzie.
| nazwa | narodziny | ssie mleko? | liczba nóg | czy lata? | gromada |
|---|---|---|---|---|---|
| mysz | żywe | tak | 4 | nie | ssaki |
| lew | żywe | tak | 4 | nie | ssaki |
| wieloryb | żywe | tak | 2 | nie | ssaki |
| kiwi | jajo | nie | 2 | nie | ptaki |
| orzeł | jajo | nie | 2 | tak | ptaki |
| bocian | jajo | nie | 2 | tak | ptaki |
| nietoperz | żywe | tak | 2 | tak | ??? |
Read ARFF do załadowania zbioru danych, a następnie przekaż zbiór danych do operatora Set Role, w którym wskaż atrybut type jako pełniący rolę zmiennej celu (ang. label). Dodatkowo, atrybut animal wskaż jako atrybut pełniący rolę identyfikatora. Tak zmodyfikowany zbiór danych prześlij do operatora Naive Bayes i uruchom przepływ. Cross-Validation, w fazie uczenia tego operatora umieść właśnie operator naiwnego klasyfikatora Bayesa, a w fazie testowania następujące po sobie operatory Apply Model i Performance (Classification). Twój przepływ powinien wyglądać tak:
Cross-Validation drugi operator realizujący model klasyfikatora bazującego na indukcji reguł (operator Rule Induction). Wyłącz operator Naive Bayes Classifier (z menu kontekstowego operatora wybierz opcję Enable Operator) i w jego miejsce wstaw operator indukcji reguł. Porównaj dokładność naiwnego klasyfikatora Bayesa i dokładność uzyskaną przez algorytm indukcji reguł.
Data Table. Możesz także posłużyć się operatorem Statistics do zapoznania się z histogramami dla poszczególnych atrybutów.Data Sampler do podzielenia zbioru na dwie części: 70% danych trafi do zbioru uczącego (ang. train set), a 30% danych stanowić będzie zbiór testujący (ang. test set)Naive Bayes. Predictions do wykonania predykcji na zbiorze testującym.Test Learners. Drugim parametrem wejściowym operatora jest konkretny algorytm uczący, prześlij więc na wejście operatora Test Learners algorytm naiwnego klasyfikatora Bayesa. W ustawieniach operatora Test Learners zaznacz, że operator ma dokonać podziału na zbiór uczący i testujący w proporcji 70%-30%.Confusion Matrix i obejrzyj wynikową macierz pomyłek.
Samodzielnie zbuduj i przetestuj naiwny klasyfikator Bayesa na zbiorze smsspamcollection.csv. Możesz do tego celu wykorzystać dowolne narzędzie (RapidMiner, Python, R, Orange Data Mining). Wyniki prześlij na adres Mikolaj.Morzy@put.poznan.pl do niedzieli, 10 maja, godz. 21:00. Jeżeli realizujesz zadanie w notatniku/kodzie Pythona, prześlij ten kod. Jeśli wykorzystujesz RapidMiner lub Orange Data Mining, prześlij plik `*.pdf` zawierający dwa zrzuty ekranu: zrzut pokazujący cały workflow, oraz zrzut pokazujący macierz pomyłek. Zadanie uznam za zrealizowane, jeśli ogólna dokładność klasyfikatora będzie większa niż 90%.