Skip to content

Latest commit

 

History

History
13 lines (9 loc) · 3.23 KB

README.md

File metadata and controls

13 lines (9 loc) · 3.23 KB

Artificial-Intelligence

Solving tasks given by PJWSTK and own projects based on artificial intelligence.

Mini-projekt: k-NN

Celem jest napisanie programu, który pobiera następujące argumenty: K dodatnia liczba naturalna będąca hiper parametrem k-NN. Train-set: nazwa pliku zawierającego zbiór treningowy w postaci csv. Test-set: nazwa pliku zawierającego zbiór testowy w postaci csv. Program ma dokonać klasyfikacji k-NN wszystkich obserwacji z pliku test-set na podstawie pliku train-set oraz podać dokładność (accuracy) tej klasyfikacji (proporcję poprawnie zaklasyfikowanych przykładów testowych). Program ma też dostarczać testowy interfejs (niekoniecznie graficzny), który umożliwia zapętlone podawanie przez użytkownika pojedynczych wektorów do klasyfikacji i podaje ich etykietę k-NN na podstawie train-set. Opcjonalne rozszerzenie (dodatkowy punkt za aktywność): dowolną techniką (excel, python, etc.) Zrobić wykres zależności dokładności (accuracy) od wartości K. Przetestować na danych ze zbiorów treningowego i testowego znajdujących się w plikach test.csv oraz training.csv (ale program powinien umożliwiać wykorzystanie dowolnego zbioru).

Note: javaFX is essential to run the project!

Mini-projekt: Perceptron

W pliku training.csv znajdują się dane treningowe: zbiór Iris ograniczony do Iris-setosa i Iris-versicolor. W pliku test.csv znajduje się zbiór testowy. Zaimplementuj perceptron i wytrenuj, aby rozróżniał dwa gatunki. Testuj zbiorem testowym i wypisz dokładność klasyfikacji. Program powinien umożliwiać: Wczytanie dowolnego zbioru treningowego z pliku w formacie csv, gdzie ostatnia kolumna to atrybut decyzyjny. Powinien dostosowywać liczbę wag do wczytanego zbioru. (!!) Wybór stałej uczenia. Prosty interfejs pozwalający na podanie ręczne wektorów do klasyfikacji. Termin oddania: dwa tygodnie.

Mini-projekt: Sieć jednowarstwowa

Celem projektu jest stworzenie sieci jednowarstwowej identyfikującej język, w jakim na-pisany jest tekst wejściowy. W plikulang.zip znajduje się zbiór tekstów w trzech językach – angielskim, polskimi niemieckim. Aby zaklasyfikować dany tekst należy zliczyć częstotliwość występowania każdej z liter alfabetu łacińskiego. Na potrzeby tego zadania ignorujemy wszystkie nie-standardowe litery (polskie znaki, etc.). Zliczamy tylko częstotliwości 26 podstawowych liter alfabetu, pomijając wszystkie inne znaki. Dla tekstu wejściowego generujemy 26-elementowy wektor wejściowy zawierający liczbę wystąpień każdej z liter. Następnie należy znormalizować wektor: ˆv=v|v|. Wyjście sieci powinno mieć reprezentację lokalną: do każdego neuronu przypisujemy jeden z języków. Dla danego tekstu wartość wyjściową 1 powinien mieć neuron reprezentujący język tekstu, a pozostałe wartość 0. Aby klasyfikować język tekstu wejściowego, wybieramy neuron z maksymalną aktywacją. Możemy wykorzystać neurony ze skokową funkcją aktywacji (w tym wypadku możemy użyć implementacji z ostatniego projektu), lub sigmoidalną. W plikulang.test.zip znajduje się zbiór testowy, którym testujemy wytrenowaną sieć. Program powinien zapewniać interfejs umożliwiający wklejenie tekstu i rozpoznanie jego języka.