{"id":19311614,"url":"https://github.com/rednafi/indoor-movement-prediction","last_synced_at":"2026-03-12T14:39:17.545Z","repository":{"id":37219103,"uuid":"182719972","full_name":"rednafi/indoor-movement-prediction","owner":"rednafi","description":"Predicting user movements from temporal streams of RSS (Radio Signal Strength) measured between the nodes of a WSN (Wireless Sensor Network WSN)","archived":false,"fork":false,"pushed_at":"2022-12-08T11:42:57.000Z","size":32386,"stargazers_count":7,"open_issues_count":34,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-17T08:47:12.813Z","etag":null,"topics":["classification","ensemble-learning","machine-learning","plotly-express","timeseries-analysis"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rednafi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-22T09:17:09.000Z","updated_at":"2023-05-31T15:48:58.000Z","dependencies_parsed_at":"2023-01-25T05:31:22.813Z","dependency_job_id":null,"html_url":"https://github.com/rednafi/indoor-movement-prediction","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rednafi/indoor-movement-prediction","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Findoor-movement-prediction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Findoor-movement-prediction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Findoor-movement-prediction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Findoor-movement-prediction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rednafi","download_url":"https://codeload.github.com/rednafi/indoor-movement-prediction/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rednafi%2Findoor-movement-prediction/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30428514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification","ensemble-learning","machine-learning","plotly-express","timeseries-analysis"],"created_at":"2024-11-10T00:29:33.910Z","updated_at":"2026-03-12T14:39:17.512Z","avatar_url":"https://github.com/rednafi.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Indoor Movement Prediction\nPredicting user movements from temporal streams of RSS (Radio Signal Strength) measured between the nodes of a WSN (Wireless Sensor Network WSN). A static version of the jupyter notebook can be seen [here.](https://nbviewer.jupyter.org/github/rednafi/indoor-movement-prediction/blob/master/notebooks/.ipynb_checkpoints/%20Indoor%20User%20Movement%20Prediction%20from%20RSS%20Data%20Set%20-checkpoint.ipynb)\n\n[![dataset](https://img.shields.io/badge/Dataset-indoor--movement-red.svg)](https://archive.ics.uci.edu/ml/datasets/Indoor+User+Movement+Prediction+from+RSS+data)\n[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/rednafi/indoor-movement-prediction/blob/master/LICENSE)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)\n\n\u003c/div\u003e\n\n\n## Dataset Description\n### Summary\nThis dataset represents a real-life benchmark in the area of Ambient Assisted Living applications. The binary classification task consists in predicting the pattern of user movements in real-world office environments from time-series generated by a Wireless Sensor Network (WSN).\n\nInput data contains temporal streams of radio signal strength (RSS) measured between the nodes of a WSN, comprising 5 sensors: 4 anchors deployed in the environment and 1 mote worn by the user. Data has been collected during user movements at the frequency of 8 Hz (8 samples per second). In the provided dataset, the RSS signals have been rescaled to the interval [-1,1], singly on the set of traces collected from each anchor.\n\nTarget data consists in a class label indicating whether the user's trajectory will lead to a change in the spatial context (i.e. a room change) or not. In particular, the target class +1 is associated to the location changing movements, while the target class -1 is associated to the location preserving movements.\n\nThe measurement campaign involved a number of 3 different environmental settings, each of which comprises 2 rooms (containing typical office furniture) separated by a corridor. A sketch of the common setup considered is provided by the Figure in file **MovementAAL.jpg**.\n\nEach file in the provided dataset contains data pertaining to one temporal sequence of input RSS data (1 user trajectory for each file). The dataset contains 314 sequences, for a total number of 13197 steps. The dataset can be found [here](https://archive.ics.uci.edu/ml/datasets/Indoor+User+Movement+Prediction+from+RSS+data). For more information on the dataset, visit this [link](http://wnlab.isti.cnr.it/paolo/index.php/dataset/6rooms).\n\n![Screenshot](https://github.com/rednafi/indoor-movement-prediction/blob/master/processed_data/RSS%20Output.png)\n\n### Attribute Information\nData is provided in comma separated value (csv) format.\n\n* **Input:** Input RSS streams are provided in files named **MovementAAL_RSS_SEQID.csv**. Here, *IDSEQ* is the progressive numeric *sequence ID*. In each file, each row corresponds to a time step measurement (in temporal order) and contains the following information:\n*RSS_anchor1, RSS_anchor2, RSS_anchor3, RSS_anchor4*.\n\n* **Target:** Target data is provided in the file **MovementAAL_target.csv**. Here, each row in this file contains:\n*sequence_ID*, *class_label*.\n\n* **Dataset Grouping:** Data is grouped in 3 sets. File **MovementAAL_DatasetGroup.csv**, provides information about such data grouping. Each row in this file contains:\n*sequence_ID*, *dataset_ID*.\n\n* **Path Grouping:** Users' movements are divided in 6 prototypical paths. File **MovementAAL_Paths.csv** provides information about data grouping based on path type. Here, each row in this file contains:\n*sequence_ID*, *path_ID*.\n\n## Project Organization\n\n### Folder Structure\n```\n.\n├── data\n│   ├── indoor_movement.csv\n│   ├── indoor_movement_red.csv\n│   └── MovementAAL\n│       ├── dataset\n│       │   ├── MovementAAL_RSS_1.csv\n│       │   ├── MovementAAL_RSS_2.csv\n│       │   ...........................\n│       │\n│       ├── dataset_description.txt\n│       ├── groups\n│       │   ├── MovementAAL_DatasetGroup.csv\n│       │   └── MovementAAL_Paths.csv\n│       ├── MovementAAL.jpg\n│       └── README.txt\n├── LICENSE\n├── notebooks\n│   └──  Indoor User Movement Prediction from RSS Data Set .ipynb\n├── processed_data\n│   ├── indoor_movement.csv\n│   ├── indoor_movement_red.csv\n│   └── RSS Output.png\n├── .dockerignore\n├── .gitignore\n├── Dockerfile\n├── README.md\n├── docker-compose.yml\n└── requirements.txt\n```\n\n### Workflow\n\n```\nDataset\n      - Preprocessing\n                - Concatenating Target Column with the Inputs\n                - Adding Ids to Each Row\n                - Adding Groups to Each Row\n                - Adding Time based on 8Hz Sampling Frequency\n\n      - Exploratory Data Analysis\n                - Time Series Visualization\n                - Histogram Plots\n                - Dimensionality Reduction\n                         - PCA (Principle Component Analysis)\n                         - UMAP (Uniform Manifold Approximation and Projection)\n\n      - Movement Classification \u0026 Prediction\n               - Baseline Model\n                        - Classification\n                                - 75-25% Train-Test Split\n                                - Classification via Random Forest\n                                - Training\n                        - Evaluation\n                                - Validation\n\n               - Ensemble Method for Improving Prediction\n                        - Feature Extraction\n                                - Tsfresh feature extraction\n                                - Important feature selection\n                        - Classification\n                                - 75-25% Train-Test Split\n                                - Classifier Ensembling Via Soft Voting (Decision Tree, KNN,\n                                Gradient Boosting,Random Forest, Adaboost)\n                                - 10-fold Stratified Cross Validation\n                                - Training\n                         - Evaluation\n                                - Validation\n                                - UMAP of the Extracted Features\n                                - Decision Boundary Plotting\n ```\n\n## Installation\n\n* You'll need [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/) installed on your machine\n\n* Clone the repo\n\n    ```bash\n    git clone git@github.com:rednafi/indoor-movement-prediction.git\n    ```\n\n\n* Run the container\n\n    ```bash\n    docker-compose up -d\n    ```\n\n* Go to your browser and open the following URL (Your token might vary. Inspect that using\n`docker logs indoorapp-cont` command)\n\n    ```\n    http://127.0.0.1:8888/?token=9143b78935c03b423190348826bfd9194beabfdb802563b8\n    ```\n\n* Stop the container\n\n    ```bash\n    docker-compose down\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frednafi%2Findoor-movement-prediction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frednafi%2Findoor-movement-prediction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frednafi%2Findoor-movement-prediction/lists"}