Giter Site home page Giter Site logo

marinimau / spike-detection-for-cooking-activity-recognition-based-on-indoor-air-quality-sensor Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 297.47 MB

Lo scopo dell'applicazione è quello di costruire un feature vector per la predizione dei pasti in base a valori registrati da sensori di qualità dell'aria. Le feature prodotte verranno automaticamente unite a feature statistiche già presenti in alcuni files. Per la classificazione utilizzare il Knowledge Flow Enviroment di Weka impostato nel file allegato.

Python 98.77% Shell 0.01% HTML 0.09% CSS 0.01% JavaScript 0.06% Jupyter Notebook 0.04% C++ 0.29% C 0.56% Fortran 0.04% Smarty 0.01% Makefile 0.01% MATLAB 0.01% TeX 0.10%
feature-vector spike-detection python scipy numpy matplotlib air-quality indoor-air-quality human-activity-recognition cooking-activity-recognition

spike-detection-for-cooking-activity-recognition-based-on-indoor-air-quality-sensor's Introduction

Spike detection per il riconoscimento dei pasti in base a sensori di qualità dell’aria

Lo scopo dell'applicazione è quello di costruire un feature vector per la predizione dei pasti in base a valori registrati da sensori di qualità dell'aria. Le feature prodotte verranno automaticamente unite a feature statistiche già presenti in alcuni files. Per la classificazione utilizzare il Knowledge Flow Enviroment di Weka impostato nel file allegato. Il feature vector si può considerare composto di due parti:

  • la prima, già implementata, viene recuperata in "./data_files/elaborated_data_files/".
  • la seconda, invece, contiene le feature legate ai picchi.

L'intera applicazione si concentra sull'implementazione della seconda parte.

Dataset

L'applicazione contiene al suo interno sia i dataset grezzi, sia i file contenenti le feature già implementate. Rispettivamente:

Dati grezzi:

./data_files/raw_data_files/[NUM_DATASET].csv

Feature esistenti:

./data_files/elaborated_data_files/[NUM_DATASET].csv

In entrambi i casi ci si riferisce ai dataset con numeri che vanno da 1 a 8. L'ordine dei dataset è dato dall'ordine alfabetico dei loro nomi orginali:

- uHooB.csv     --> 1.csv
- uHooD.csv     --> 2.csv
- uHooDM.csv    --> 3.csv
- uHooFe.csv    --> 4.csv
- uHooFr.csv    --> 5.csv
- uHooMo.csv    --> 6.csv
- uHooSil.csv   --> 7.csv
- uHooSim.csv   --> 8.csv

è consigliabile non spostare ne rinominare i file.

Dipendenze

Per il corretto funzionamento, è necessario Python 3. Installare le seguenti liberie:

  • cycler
  • kiwisolver
  • matplotlip
  • numpy
  • pandas
  • pyparsing
  • python-dateutil
  • pytz
  • scipy
  • six

Struttura del codice

Il codice è strutturato come segue:

+ root
|
|---+ data analysis
|   |
|   |---+ find_min_dist.py                  # ricerca della distanza dal picco più vicino
|   |
|   |---+ peaks_detector.py                 # funzioni per la ricerca dei picchi
|
|
|---+ data files
|   |
|   |---+ elaborated_data_files             # directory contenente i file con le feature già esistenti
|   |
|   |---+ raw_data_files                    # directory contentente i file con i dati grezzi
|
|
|---+ data_manager
|   |
|   |---+ data prefab.py                    # classe che comanda l'estrazione dei dati grezzi e li divide per giorno
|   |
|   |---+ elaborated_data_extractor.py      # esegue materialmente l'estrazione delle feature esistenti
|   |
|   |---+ raw_data_extractor.py             # esegue materialmente l'estrazione dei dati grezzi
|
|
|---+ feature vector
|   |
|   |---+ generate_peaks_features.py        # classe main per quanto riguarda la creazione delle nuove features 
|
|
|---+ feature_vector_results                # contiene i feature vector finiti (completi di entrambe le parti)
|
|
|---+ merge_feature_vectors
|   |
|   |---+ merge_features.py                 # unisce le feature esistenti con quelle calcolate dall'applicazione
|
|
|---+ peaks_features_results                # contiene le feature legate ai picchi, che poi andranno unite alle features già presenti
|
|
|--+ main.py                                # lancia l'intera applicazione
|
|
|--+ params.py                              # contiene i parametri che consentono di settare l'applicazione

Utilizzo

Tutti i parametri che possono essere modificati, si trovano nel file params.py:

Considerare solo i pasti che utilizzano un fornello:

use_only_cooker_actvity = <bool> 

Attribuire un peso ai picchi in base all'ordine in cui vengono trovati:

consider_peaks_weight = <bool>

Unire le feature esistenti con quelle calcolate dall'applicazione:

merge_feature_vector = <bool>

Specificare quanti picchi per ogni parametro cercare nell'intera giornata:

n_peaks_co2_feature_vector = <int>
n_peaks_tvoc_feature_vector = <int>
n_peaks_pm25_feature_vector = <int>
n_peaks_temp_feature_vector = <int>
n_peaks_humidity_feature_vector = <int>

Cercare i picchi solo all'interno degli intervalli di colazione, pranzo e cena:

find_peaks_by_intervals  = <bool>

Se i picchi vengono cercati solo nei 3 intervalli, specificare quanti picchi per ogni parametro cercare in ciascun intervallo:

n_peaks_co2_by_interval = <(int, int, int)>
n_peaks_tvoc_by_interval = <(int, int, int)>
n_peaks_pm25_by_interval = <(int, int, int)>
n_peaks_temp_by_interval = <(int, int, int)>
n_peaks_humidity_by_interval = (<(int, int, int)>

Specificare il minuto in qui iniziano e finiscono gli intervalli di colazione, pranzo e cena. Per minuto si intende il numero di minuti trascorsi dalla mezzanotte.

colazione = <(int, int)> 
pranzo = <(int, int)>
cena = <(int, int)>

Specificare quali dataset usare, basta aggiungere il numero del dataset alla lista.

SENSOR_list = <[int, int, ...]>

Specificare i giorni da utilizzare, valgono per tutti i dataset. Il primo intero indica il giorno di partenza, che è compreso. Il secondo intero indica il giorno in cui fermarsi, che non è compreso.

DAY_intr = <(int, int)>

Una volta impostati i parametri è sufficiente lanciare l'applicazione. A esecuzione terminata recuperare i feature_vectors nei percorsi indicati.

spike-detection-for-cooking-activity-recognition-based-on-indoor-air-quality-sensor's People

Contributors

marinimau avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.