Reproducible Package for "From Global to Local: Cluster-Aware Learning for Wi-Fi Fingerprinting Indoor Localisation"
This repository is the reproducibility package for the “From Global to Local: Cluster-Aware Learning for Wi-Fi Fingerprinting Indoor Localisation" research paper.
M. Matey-Sanz, J. Torres-Sospedra, J. Huerta and S. Trilles "From Global to Local: Cluster-Aware Learning for Wi-Fi Fingerprinting Indoor Localisation".
Install Python 3.11, download the repository, open a command line in the root of the directory and install the required software by executing:
pip install -r requirements.txtInstall Docker for building an image based on a Dockerfile with a Jupyter environment and running a container based on the image.
Download the repository, open a command line in the root of the directory and:
- Build the image:
docker build . --tag wifi-cluster-aware-learning- Run the image:
docker run -it -p 8888:8888 wifi-cluster-aware-learning- Click on the login link (or copy and paste in the browser) shown in the console to access to a Jupyter environment.
Open the Jupyter Notebook (*.ipynb) file. You can execute the code to reproduce the obtained results.
Important
The reproduction of the analyses in the Jupyter Notebook file require ~6GB of RAM. The Python kernel might crash if can not allocate up to 6GB of data.
01_DATA: contains the raw positioning results obtained using the proposed method and a baseline.01_RAW-RESULTS: the raw positioning results obtained using the proposed method and a baseline in the UJIIndoorLoc, UTSIndoorLoc and TUT datasets. This directory should contain a folder for each dataset, which must be downloaded from Zenodo or Google Drive (see 01_DATA/01_RAW-RESULTS/README.md). Then each dataset folder contains three subfolders:BASELINE,LOCandRSSI, which contain the raw results of the baseline, XYZ clustering and RSSI clustering methods. These subfolders contain CSV files named<model>_cluster_results_<strategy>_pow.csvcontaining the results for model<model>using the strategy<strategy>. Each CSV file contains the following columns:n,n_clusters,pred_lon,pred_lat,pred_floor,true_lon,true_lat,true_floor.02_COMPUTATIONAL-TIME: contains two folders,01_TRAINand02_ESTIMATION, which have CSV files with the elapsed time of executing the proposed method in the training and localisation phase.
02_RESULTS: contains figures and CSVs generated from the analyses.- `01_ERROR-RESULTS: contains the overall positioning performance results, matching Tables 3, 4 and 5 and Figures 4 and 5 of the paper.
- `01_HYPERPARAMETER-ANALYSIS: contains the results of the impact of the hyperparameters of the method in the positioning performance. The contained plots match the Figures 6 and 7 of the paper.
- `01_COMPUTATIONAL-TIME: contains the computational analysis overhead of the proposed method, matching Figures 8 and 9 of the paper.
lib: Python module containing all the code employed for the analyses.analysis.ipynb: Jupyter Notebook containing the executed analyses and results.analysis.html: Static HTML version of the Jupyter Notebook. It can be downloaded and opened in the web browser.Dockerfile: a recipe for the computational environment using Docker.requirements.txt: dependencies required to run the analysis.
All contained code is licensed under the Apache License 2.0.
All data used in this repository is licensed under Open Data Commons Attribution License.
This work was funded by MCIN/AEI/10.13039/501100011033/ and ERDF/EU under Grant PID2022-141813OB-I00. It was also supported by a 2024 Leonardo Grant for Scientific Research and Cultural Creation from the BBVA Foundation.