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%.