Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:aml:lab5 [2013/11/15 13:03] esimon [Import do Octave] |
pl:dydaktyka:aml:lab5 [2019/06/27 15:50] (aktualna) |
| |
==== Analiza danych ==== | ==== Analiza danych ==== |
Napisz program zapisujący dane z akcelerometru do bazy SQLite. | Napisz program zapisujący dane z akcelerometru do bazy SQLite (mozesz tez przerobic program: [[https://ai.ia.agh.edu.pl/wiki/_media/pl:dydaktyka:aml:prv:projects2016:amlactivityrecognition.zip|Wykrywanie Aktywnosci]]) |
Aby zapisać bazę danych w pamięci urządzenia, wykorzystaj poniższy kod. | Aby zapisać bazę danych w pamięci urządzenia, wykorzystaj poniższy kod. |
| * Pamiętaj żeby dodać odpowiednie ''uses-permission'' do manifestu |
| * Jeśli z poziomu systemu operacyjnego nie będzie dostępu do pamięci urządzenia, spróbuj zapisać bazę danych w katalogu ze zdjęciami i np. wysłać ją sobie z telefonu mailem. |
| |
Ustalmy że: | Ustalmy że: |
* Baza danych będzie nazywać się **acc** | * Baza danych będzie nazywać się **acc**, tabela przechowująca dane, również **acc** |
* Będzie zawierać 4 kolumny: **id, acc_x, acc_y, acc_z** | * Będzie zawierać 4 kolumny: **id, acc_x, acc_y, acc_z** |
| |
<code java> | <code java> |
try { | try { |
File sd = Environment.getExternalStorageDirectory(); | File sd = Environment.getExternalStorageDirectory(); |
FileChannel src = new FileInputStream(currentDB).getChannel(); | FileChannel src = new FileInputStream(currentDB).getChannel(); |
FileChannel dst = new FileOutputStream(backupDB).getChannel(); | FileChannel dst = new FileOutputStream(backupDB).getChannel(); |
dst.transferFrom(src, 0, src.size()); | dst.transferFrom(src, 0, src.size()); |
src.close(); | src.close(); |
dst.close(); | dst.close(); |
} | } |
} catch (Exception e) { | } catch (Exception e) { |
</code> | </code> |
| |
==== Import do Octave ==== | === Import do Octave/Python=== |
- Zaimportuj dane z odczytów do Octave: | - Zaimportuj dane z odczytów do Octave: |
* W tym celu otwórz bazę danych w SQLite: <code bash>sqlite3 acc.db</code> | * W tym celu otwórz bazę danych w SQLite: <code bash> sqlite3 acc.db</code> |
* Ustaw separator danych na tabulator <code sqlite>.mode tabs </code> | * Ustaw separator danych na tabulator <code sqlite> .mode tabs </code> albo na przecinki <code sqlite> .mode csv </code> |
* Ustaw wyjscie z SQLite do pliku: <code sqlite>.output 'dane.dat'</code> | * Ustaw wyjscie z SQLite do pliku: <code sqlite> .output 'dane.dat'</code> |
* Wrzuć dane z trzech osi do pliku: <code sql> select acc_x, acc_y, acc_z from acc;</code> | * Wrzuć dane z trzech osi do pliku: <code sql>select acc_x, acc_y, acc_z from acc;</code> |
- Następnie otwórz Octave i zaimportuj dane do zmiennej **Acc**:<code octave> Acc = load('dane.dat');</code> | - Następnie otwórz Octave i zaimportuj dane do zmiennej **Acc**: |
- Wyrysuj dane z poszczególnych osi na wykresie:<code octave> plot(Acc)</code> | - <code octave>Acc = load('dane.dat');</code> |
| - <code python>df = pandas.read_csv('dane.dat',sep='\t');</code> |
| |
| |
| |
| === Określenie parametrów danych === |
| - Przyglądając się wykresom wyodrębnij cechy które twoim zdaniem mogą mieć wpływ na rozróżnienie poszczególnych aktywności użytkownika takich jak: |
| - stanie |
| - chodzenie |
| - bieganie |
| - siadanie |
| - wstawanie |
| - Spróbuj określić aktywność na podstawie maksymalnej i minimalnej amplitudy oraz średniej amplitudy w oknie czasowym o długości np. 3 sekund. |
| - Zapoznaj się (pobieżnie) z artykułem: {{:pl:dydaktyka:aml:activity-recognition-phone.pdf| Activity recognition}} i zastanów się, czy możesz zastosowac którys z opisanych algorytmów do swoich danych |
| - Możesz też wykorzystać "gotowiec" z poprzedniego semestru: https://drive.google.com/file/d/1-8bU3wu5oPP2ybIuyFskIvBwNIIN6eWz/view (Sekcja "Dane to wszystko" |
| |
| |
| |
| |
==== Klasteryzacja ==== | |
//Klasteryzacja z wykorzystaniem danych z analizy// | |
| |
===== Android===== | ===== Android===== |
// Przetestowanie aplikacji do wykrywania aktywnosci// | - Android API oferuje wbudowaną klasę do wykrywania aktywności o nazwie //ActivityRecognition//. |
| - Pobierz przykładową aplikację wykorzystującą tą klasę: [[http://developer.android.com/shareables/training/ActivityRecognition.zip|Activity recognition]] i zapoznaj się z kodem źródłowym. Opis kodu źródłowego znajduje się [[http://developer.android.com/training/location/activity-recognition.html|tutaj]] |
| - Przetestuj działanie aplikacji. Czy klasę można byłoby udoskonalić o analizę danych z akcelerometru jak w pierwszym zadaniu z laboratorium? |