AED/L/z1
From WikiZMSI
[edytuj]
Na zajęciach
- Z repozytorium UCI Machine Learning Repository należy pobrać zbiór danych dotyczący klasyfikacji wina i zapoznać się z nim.
- Należy wykorzystać skrypt MATLAB-owy wineDataSet.zip, który przygotowuje dane do pracy tzn.: wczytuje dane z pliku wine.data, każdą ze zmiennych dyskretyzuje na 5 przedziałów, kolumnę decyzyjną - zawierającą klasę wina umieszcza jako ostatnią. Skrypt zwraca macierz o wymiarach 178 x 14, gdzie obserwacje są pisane wierszami a zmienne kolumnami.
- Należy opracować skrypt pozwalający na losowy podział zbioru danych na 2 podzbiory: uczący i testujący, w zadanej proporcji (np. 70% i 30%) przekazywanej jako argument do skryptu.
- Należy opracować skrypt budujący naiwny klasyfikator Bayesa - tj. budujący odpowiednie macierze przechowujące warunkowe rozkłady prawdopodobieństwa, które będą wykorzystywane na etapie klasyfikacji.
- Należy opracować skrypt klasyfikujący zadany na wejście wektor zmiennych.
- Należy obliczyć dokładność klasyfikatora na zbiorach uczącym i testującym.
[edytuj]
Do domu
- Należy znaleźć sobie inny zbiór danych (może być również z repozytorium UCI, ale nie musi), dla którego można określić zadanie klasyfikacji. Zbiór powinien być odpowiednio duży (sugeruje się co najmniej 1000 rekordów i co najmniej 20 zmiennych).
- Zmienne ciągłe należy zdyskretyzować wg własnego uznania, ale nie tracąc zbyt dużo informacji. Program nie powinien mieć ograniczenia, że każda ze zmiennych musi mieć tyle samo możliwych wartości (uproszczenie tylko na czas laboratoriów).
- Dla znalezionego zbioru należy zbudować naiwny klasyfikator Bayesa i przetestować jego dokładność używając techniki K-krotnej krzyżowej walidacji (kroswalidacji).
- Zaimplementować dodatkowy skrypt pozwalający na ewentualne "epsilonowanie" macierzy rozkładów warunkowych, tj. dodawanie małej liczby do całego rozkładu i normalizowanie go do sumy równej 1. Zbadać dokładność klasyfikacji po epsilonowaniu.