Zadanie 3
UWAGA! Do wszystkich projektów należy przygotować dwa programy testujące (podobnie jak w przypadku drugiego projektu, tzn. pierwszy powinien pokazywać
możliwości programu, drugi powinien testować poprawność napisanego kodu. W projektach należy - o ile nie jest inaczej uzasadnione - korzystać z możliwości biblioteki STL. Kod źródłowy powinien
być udokumentowany w sposób umożliwiający automatyczne wygenerowanie dokumentacji przy użyciu narzędzia
doxygen. Do każdego projektu należy przygotować dwie dokumentcje - funkcjonalną i techniczną. Dokumentacja funkcjonalna powinna zostać przygotowana w formie elektronicznej
(plik w formacie pdf lub ps), zawierać maksymalnie 4 strony tekstu i opisywać sposób działania programu, itp. (dokumentacja użytkownika!). Dokumentacja techniczna (klasy, struktura
projektu, itp.) powinna zostać wygenerowana za pomocą narzędzia doxygen w formacie HTML i - podobnie jak w przypadku dokumentacji funkcjonalnej - należy ją zaprezentować podczas
oddawania projektu oraz wysłać razem z kodem programu. Za przygotowanie dokumentacji funkcjonalnej w systemie LaTeX (patrz tutaj)
dodatkowo 2 punkty.
Uprzedzając ewentualne pytania do niektórych projektów:
- Format ARFF jest to format zapisu danych stworzony na potrzeby oprogramowania Weka. Opis formatu znajduje się tutaj.
- Dane w formacie ARFF można pobrać tutaj.
- Walidacja modelu wygenerowanego przez algorytm klasyfikacji danych oznacza sprawdzenie jego możliwości predykcyjnych na zbiorze danych, który nie był użyty do budowy tego modelu. W przypadku projektów, w których wymagana jest walidacja zbiorem testowym należy dokonać losowego podziału całego zestawu danych na dwa rozłączne zbiory - trenujący (na którym zbudowany będzie model) i testowy (na którym model będzie sprawdzany). Przykładowy rozsądny podział to 2/3 danych w zbiorze trenującym i 1/3 w zbiorze testowym.
- W niektórych projektach określone są klasy atrybutów na jakich ma działać algorytm uczenia się. Dla uproszczenia należy przyjąć, że atrybuty nominalne to takie, które charakteryzują się skończonym lub przeliczalnym zbiorem wartości dyskretnych (kolor, dzień tygodnia, grupa wiekowa, przedziały temperatur), zaś numeryczne to takie, które przyjmują wartości ze zbioru liczb rzeczywistych (pomiar natężenia prądu, wiek, temperatura).
1. (zajęty) Zaimplementować drzewo decyzyjne do klasyfikacji danych. Atrybuty nominalne. Walidacja zbiorem testowym. Dane wejściowe - pliki w formacie ARFF. Materiały m.in.: tutaj i tutaj
2. Grupowanie danych metodami k-means i k-medoids. Wykrywanie istotnych zmiennych (za pomocją losowej permutacji wartości poszczególnych zmiennych). Dane wejściowe - pliki w formacie ARFF. Materiały m.in.: tutaj i tutaj.
3. Mini-SQL dla plików w formacie ARFF. Do zaimplementowania proste zapytania (jak dla odwołań do pojedynczej tabeli) typu: SELECT *; SELECT kolumna; SELECT avg(kolumna); SELECT DISTINCT kolumna; SELECT kolumna WHERE warunek itp.
4. (zajęty) Gra w statki dla dwóch graczy. Rozmiar planszy, wielkości i liczba statków są parametrami, które można konfigurować. Automatyczne rozmieszczanie statków. Gracze jako dwa niezależne programy komunikujące się za pomocą plików (uruchomione na tym samym koncie).
5. (zajęty) Program uczący się grać w kółko i krzyżyk (plansza 3 na 3). Program powinien nie popełniać tych samych błędów. Do nauki użyć prostego programu, który gra losowo. Zdobytą wiedzę program powinien zapisywać w pliku.
6. (zajęty) Gra ,,Reversi'' (przeciwko komputerowi).
7. (zajęty) Klasyfikacja danych za pomocą algorytmu k-najbliższych sąsiadów (k-nearest neighbors). Atrybuty numeryczne. Walidacja zbiorem testowym. Dane wejściowe - pliki w formacie ARFF. Materiały m.in.: tutaj
8. Grupowanie hierarchiczne wstępujące (agglomerative hierarchical clustering). Dane wejściowe - pliki w formacie ARFF. Materiały m.in.: tutaj.
9. Program wspomagający użytkownia w nauce szybkiego pisania na klawiaturze. Program powinien umożliwiać wybranie jednego z dostępnych ćwiczeń. Ćwiczenia, zapisane w pliku tekstowym, zawierają tekst, który użytkownik musi jak najszybciej przepisać na ekran komputera. Należy zaimplementować kilka trybów pracy , np. przepisywanie pełnego tekstu, poszczególne słowa z ćwiczenia pojawiają się w kolejności losowej, itp.
10. Mini-Matlab. Praca na zmiennych (tworzenie, przypisywanie wartości, usuwanie). Operacje na wektorach (tworzenie, usuwanie, dodawanie, odejmowanie, mnożenie), ew. macierzach.
Przykłady działania:
> a=5
> a
[5]
> v=[1,2,3]
> u=[1,2,3]
> w=v+u
> w
[2,4,6]
Dodatkowe punkty za operacji złożone (np. a=b=c)
11. Klasyfikacja za pomocą naiwnego klasyfikatora bayesowskiego (Naive Bayes Classifier). Atrybuty nominalne. Walidacja zbiorem testowym. Dane wejściowe - plik w formacie ARFF. Materiały m.in: tutaj i tutaj
12. (zajęty) Gra w szachy dla 2 osób.