/Time_series_NN

Primary LanguageC++MIT LicenseMIT

Time series & Nearest Neighbor

Ομάδα:

Δημήτρης Χριστοφής 1115201800214
Κωνσταντίνος Θεοφίλης 1115201600287

Τα ερωτήματα που έχουν υλοποιηθεί:

Ερώτημα Α

Αλγόριθμοι LSH & Hypercube για vectors.
Αλγόριθμος LSH για Discrete Frechet για curves.
Αλγόριθμος LSH για Continuous Frechet για curves.

Ερώτημα B

Initialization:

K-means++.

Αssignment:

Lloyd's (Vector & Curves/Time series).

Update:

Υπολογισμός της μέσης χρονοσειράς ως διάνυσμα.
Υπολογισμός της μέσης χρονοσειράς ως καμπύλη.

Δομή αρχείων project:

Το project είναι υλοποιημένο και χωρισμένο σε modules. Ότι αφορά κώδικα βρίσκεται στον φάκελο /src, ο οποίος με την σειρά του χωρίζεται σε 5 υποφακέλους ανάλογα με τα ερωτήματα. Σημείωση: ο φάκελος /src/Common περιλαμβάνει κώδικα κοινό και για τις υλοποιήσεις που ζητούνται. Στο root του /src βρίσκονται δύο αρχεία main, ένα για την κάθε εκτέλεση. Τα προγραμματα μας μεταγλωττίζονται με χρήση Makefile. Στο μονοπάτι src/fred υπάρχει ο έτοιμος κώδικας που χρησιμοποιήθηκε για την υλοποίηση του ερωτήματος Aiii (Frechet Continuous).

Στον φάκελο dir υπάρχουν τα αρχεία εισόδου που ζητούνται απο την εκφώνηση (input file και query file για ερώτημα Α καθώς και cluster.conf για Β). Επίσης, στον ίδιο φάκελο /dir/output γίνεται και η αποθήκευση των output.

Για το Unit Testing έχει δημιουργηθεί νέος φάκελος στο root του project /tests. Στο tests/lib υπάρχει η βιβλιοθήκη acutest.hpp η οποία αποτελεί το test framework που χρησιμοποιήσαμε. Στο test_unit.cpp έχουν ηλοποιηθεί ορισμένες βασικές test συναρτήσεις που με την σειρά τους ελέγχουν την λειτουργικότητα των συναρτήσεων μας.

!!! Θα θέλαμε να επισημάνουμε πως για τα ερωτήματα Αiii και B (Frechet) ο χρόνος εκτέλεσης είναι πολύ μεγάλος με τα συγκεκριμένα αρχεία.. !!!

Compile και Execution:

Question A:

Compile with: make search
Execution:

./search -i dir/nasd_input.csv -q dir/nasd_query.csv -o dir/output/outLSH.txt -algorithm LSH
./search -i dir/nasd_input.csv -q dir/nasd_query.csv -o dir/output/outHypercube.txt -algorithm Hypercube
./search -i dir/nasd_input.csv -q dir/nasd_query.csv -o dir/output/outFrechetDiscrete.txt -algorithm Frechet -metric discrete -delta 1.0
./search -i dir/nasd_input.csv -q dir/nasd_query.csv -o dir/output/outFrechetContinuous.txt -algorithm Frechet -metric continuous -delta 1.0

Question B:

Compile with: make cluster
Execution:

./cluster -i dir/nasd_input.csv -c dir/cluster.conf -o dir/output/outClusterVector.txt -update Mean_Vector -assignment Classic -complete -silhouette
./cluster -i dir/nasd_input.csv -c dir/cluster.conf -o dir/output/outClusterFrechet.txt -update Mean_Frechet -assignment Classic -complete -silhouette

Unit Tests:

Compile with: make test_unit
Execution:

./test_unit