diff --git a/.gitignore b/.gitignore index 8f090ae..2d5c0d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.directory data/ + *data **.ipynb_checkpoints temp/ diff --git a/data/.DS_Store b/data/.DS_Store deleted file mode 100644 index 5008ddf..0000000 Binary files a/data/.DS_Store and /dev/null differ diff --git a/data/README.txt b/data/README.txt new file mode 100644 index 0000000..068ace3 --- /dev/null +++ b/data/README.txt @@ -0,0 +1,100 @@ +=================================================================================================== +Smartphone-Based Recognition of Human Activities and Postural Transitions Data Set +Version 2.1 +=================================================================================================== +Jorge L. Reyes-Ortiz(1,2), Davide Anguita(1), Luca Oneto(1) and Xavier Parra(2) +1 - Smartlab, DIBRIS - Università degli Studi di Genova, Genoa (16145), Italy. +2 - CETpD - Universitat Politècnica de Catalunya. Vilanova i la Geltrú (08800), Spain +har '@' smartlab.ws +www.smartlab.ws +=================================================================================================== + +The experiments were carried out with a group of 30 volunteers within an age bracket of 19-48 years. They performed a protocol of activities composed of six basic activities: three static postures (standing, sitting, lying) and three dynamic activities (walking, walking downstairs and walking upstairs). The experiment also included postural transitions that occurred between the static postures. These are: stand-to-sit, sit-to-stand, sit-to-lie, lie-to-sit, stand-to-lie, and lie-to-stand. All the participants were wearing a smartphone (Samsung Galaxy S II) on the waist during the experiment execution. We captured 3-axial linear acceleration and 3-axial angular velocity at a constant rate of 50Hz using the embedded accelerometer and gyroscope of the device. The experiments were video-recorded to label the data manually. The obtained dataset was randomly partitioned into two sets, where 70% of the volunteers was selected for generating the training data and 30% the test data. + +The sensor signals (accelerometer and gyroscope) were pre-processed by applying noise filters and then sampled in fixed-width sliding windows of 2.56 sec and 50% overlap (128 readings/window). The sensor acceleration signal, which has gravitational and body motion components, was separated using a Butterworth low-pass filter into body acceleration and gravity. The gravitational force is assumed to have only low frequency components, therefore a filter with 0.3 Hz cutoff frequency was used. From each window, a vector of 561 features was obtained by calculating variables from the time and frequency domain. See 'features_info.txt' for more details. + +This dataset is an extended version of the UCI Human Activity Recognition Using smartphones Dataset that can be found at: https://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones +This version provides the original raw inertial signals from the smartphone sensors, instead of the ones pre-processed into windows which were provided in version 1. This change was done in order to be able to make online tests with the data. Moreover, the activity labels were updated in order to include postural transitions that were not part of the previous version of the dataset. + +The dataset is then divided in two parts and they can be used separately. + +1. Inertial sensor data +- Raw triaxial signals from the accelerometer and gyroscope of all the trials with with participants. +- The labels of all the performed activities. + +2. Records of activity windows. Each one composed of: +- A 561-feature vector with time and frequency domain variables. +- Its associated activity label. +- An identifier of the subject who carried out the experiment. + + +The dataset includes the following files: +========================================= + +- 'README.txt' + +- 'RawData/acc_expXX_userYY.txt': The raw triaxial acceleration signal for the experiment number XX and associated to the user number YY. Every row is one acceleration sample (three axis) captured at a frequency of 50Hz. + +- 'RawData/gyro_expXX_userYY.txt': The raw triaxial angular speed signal for the experiment number XX and associated to the user number YY. Every row is one angular velocity sample (three axis) captured at a frequency of 50Hz. + +- 'RawData/labels.txt': include all the activity labels available for the dataset (1 per row). + Column 1: experiment number ID, + Column 2: user number ID, + Column 3: activity number ID + Column 4: Label start point (in number of signal log samples (recorded at 50Hz)) + Column 5: Label end point (in number of signal log samples) + +- 'features_info.txt': Shows information about the variables used on the feature vector. + +- 'features.txt': List of all features. + +- 'activity_labels.txt': Links the activity ID with their activity name. + +- 'Train/X_train.txt': Training set. + +- 'Train/y_train.txt': Training labels. + +- 'Test/X_test.txt': Test set. + +- 'Test/y_test.txt': Test labels. + +- 'Train/subject_id_train.txt': Each row identifies the subject who performed the activity for each window sample. Its range is from 1 to 30. + +- 'Test/subject_id_test.txt': Each row identifies the subject who performed the activity for each window sample. Its range is from 1 to 30. + + +Notes: +====== +- Features are normalized and bounded within [-1,1]. +- Each feature vector is a row on the 'X' and 'y' files. +- The units used for the accelerations (total and body) are 'g's (gravity of earth -> 9.80665 m/seg2). +- The gyroscope units are rad/seg. +- A video of the experiment including an example of the 6 recorded activities with one of the participants can be seen in the following link: http://www.youtube.com/watch?v=XOEN9W05_4A + +For more information about this dataset please contact har '@' smartlab.ws or check our website www.smartlab.ws + + +License: +======== +Use of this dataset in publications must be acknowledged by referencing the following publications + +- Jorge-L. Reyes-Ortiz, Luca Oneto, Albert Samà, Xavier Parra, Davide Anguita. Transition-Aware Human Activity Recognition Using Smartphones. Neurocomputing. Springer 2015. + +This dataset is distributed AS-IS and no responsibility implied or explicit can be addressed to the authors or their institutions for its use or misuse. Any commercial use is prohibited. + + +Other Related Publications: +=========================== + +- Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra and Jorge L. Reyes-Ortiz. A Public Domain Dataset for Human Activity Recognition Using Smartphones. 21th European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning, ESANN 2013. Bruges, Belgium 24-26 April 2013. + +- Jorge-Luis Reyes-Ortiz, Luca Oneto, Alessandro Ghio, Albert Samá, Davide Anguita and Xavier Parra. Human Activity Recognition on Smartphones With Awareness of Basic Activities and Postural Transitions. Artificial Neural Networks and Machine Learning – ICANN 2014. Lecture Notes in Computer Science. Springer. 2014. + +- Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra, Jorge L. Reyes-Ortiz. Energy Efficient Smartphone-Based Activity Recognition using Fixed-Point Arithmetic. Journal of Universal Computer Science. Special Issue in Ambient Assisted Living: Home Care. Volume 19, Issue 9. May 2013 + +- Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra and Jorge L. Reyes-Ortiz. Human Activity Recognition on Smartphones using a Multiclass Hardware-Friendly Support Vector Machine. 4th International Workshop of Ambient Assited Living, IWAAL 2012, Vitoria-Gasteiz, Spain, December 3-5, 2012. Proceedings. Lecture Notes in Computer Science 2012, pp 216-223. + +- Jorge Luis Reyes-Ortiz, Alessandro Ghio, Xavier Parra-Llanas, Davide Anguita, Joan Cabestany, Andreu Català. Human Activity and Motion Disorder Recognition: Towards Smarter Interactive Cognitive Environments. 21th European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning, ESANN 2013. Bruges, Belgium 24-26 April 2013. + +================================================================================================== +Jorge L. Reyes-Ortiz, Alessandro Ghio, Luca Oneto, Davide Anguita and Xavier Parra. July 2015. diff --git a/data/RawData/.directory b/data/RawData/.directory deleted file mode 100644 index ac37fb2..0000000 --- a/data/RawData/.directory +++ /dev/null @@ -1,4 +0,0 @@ -[Dolphin] -Timestamp=2020,1,30,15,11,12 -Version=4 -ViewMode=1 diff --git a/data/activity_labels.txt b/data/activity_labels.txt new file mode 100644 index 0000000..e9ddcc2 --- /dev/null +++ b/data/activity_labels.txt @@ -0,0 +1,12 @@ +1 WALKING +2 WALKING_UPSTAIRS +3 WALKING_DOWNSTAIRS +4 SITTING +5 STANDING +6 LAYING +7 STAND_TO_SIT +8 SIT_TO_STAND +9 SIT_TO_LIE +10 LIE_TO_SIT +11 STAND_TO_LIE +12 LIE_TO_STAND diff --git a/data/features.txt b/data/features.txt new file mode 100644 index 0000000..3ecf5af --- /dev/null +++ b/data/features.txt @@ -0,0 +1,561 @@ +tBodyAcc-Mean-1 +tBodyAcc-Mean-2 +tBodyAcc-Mean-3 +tBodyAcc-STD-1 +tBodyAcc-STD-2 +tBodyAcc-STD-3 +tBodyAcc-Mad-1 +tBodyAcc-Mad-2 +tBodyAcc-Mad-3 +tBodyAcc-Max-1 +tBodyAcc-Max-2 +tBodyAcc-Max-3 +tBodyAcc-Min-1 +tBodyAcc-Min-2 +tBodyAcc-Min-3 +tBodyAcc-SMA-1 +tBodyAcc-Energy-1 +tBodyAcc-Energy-2 +tBodyAcc-Energy-3 +tBodyAcc-IQR-1 +tBodyAcc-IQR-2 +tBodyAcc-IQR-3 +tBodyAcc-ropy-1 +tBodyAcc-ropy-1 +tBodyAcc-ropy-1 +tBodyAcc-ARCoeff-1 +tBodyAcc-ARCoeff-2 +tBodyAcc-ARCoeff-3 +tBodyAcc-ARCoeff-4 +tBodyAcc-ARCoeff-5 +tBodyAcc-ARCoeff-6 +tBodyAcc-ARCoeff-7 +tBodyAcc-ARCoeff-8 +tBodyAcc-ARCoeff-9 +tBodyAcc-ARCoeff-10 +tBodyAcc-ARCoeff-11 +tBodyAcc-ARCoeff-12 +tBodyAcc-Correlation-1 +tBodyAcc-Correlation-2 +tBodyAcc-Correlation-3 +tGravityAcc-Mean-1 +tGravityAcc-Mean-2 +tGravityAcc-Mean-3 +tGravityAcc-STD-1 +tGravityAcc-STD-2 +tGravityAcc-STD-3 +tGravityAcc-Mad-1 +tGravityAcc-Mad-2 +tGravityAcc-Mad-3 +tGravityAcc-Max-1 +tGravityAcc-Max-2 +tGravityAcc-Max-3 +tGravityAcc-Min-1 +tGravityAcc-Min-2 +tGravityAcc-Min-3 +tGravityAcc-SMA-1 +tGravityAcc-Energy-1 +tGravityAcc-Energy-2 +tGravityAcc-Energy-3 +tGravityAcc-IQR-1 +tGravityAcc-IQR-2 +tGravityAcc-IQR-3 +tGravityAcc-ropy-1 +tGravityAcc-ropy-1 +tGravityAcc-ropy-1 +tGravityAcc-ARCoeff-1 +tGravityAcc-ARCoeff-2 +tGravityAcc-ARCoeff-3 +tGravityAcc-ARCoeff-4 +tGravityAcc-ARCoeff-5 +tGravityAcc-ARCoeff-6 +tGravityAcc-ARCoeff-7 +tGravityAcc-ARCoeff-8 +tGravityAcc-ARCoeff-9 +tGravityAcc-ARCoeff-10 +tGravityAcc-ARCoeff-11 +tGravityAcc-ARCoeff-12 +tGravityAcc-Correlation-1 +tGravityAcc-Correlation-2 +tGravityAcc-Correlation-3 +tBodyAccJerk-Mean-1 +tBodyAccJerk-Mean-2 +tBodyAccJerk-Mean-3 +tBodyAccJerk-STD-1 +tBodyAccJerk-STD-2 +tBodyAccJerk-STD-3 +tBodyAccJerk-Mad-1 +tBodyAccJerk-Mad-2 +tBodyAccJerk-Mad-3 +tBodyAccJerk-Max-1 +tBodyAccJerk-Max-2 +tBodyAccJerk-Max-3 +tBodyAccJerk-Min-1 +tBodyAccJerk-Min-2 +tBodyAccJerk-Min-3 +tBodyAccJerk-SMA-1 +tBodyAccJerk-Energy-1 +tBodyAccJerk-Energy-2 +tBodyAccJerk-Energy-3 +tBodyAccJerk-IQR-1 +tBodyAccJerk-IQR-2 +tBodyAccJerk-IQR-3 +tBodyAccJerk-ropy-1 +tBodyAccJerk-ropy-1 +tBodyAccJerk-ropy-1 +tBodyAccJerk-ARCoeff-1 +tBodyAccJerk-ARCoeff-2 +tBodyAccJerk-ARCoeff-3 +tBodyAccJerk-ARCoeff-4 +tBodyAccJerk-ARCoeff-5 +tBodyAccJerk-ARCoeff-6 +tBodyAccJerk-ARCoeff-7 +tBodyAccJerk-ARCoeff-8 +tBodyAccJerk-ARCoeff-9 +tBodyAccJerk-ARCoeff-10 +tBodyAccJerk-ARCoeff-11 +tBodyAccJerk-ARCoeff-12 +tBodyAccJerk-Correlation-1 +tBodyAccJerk-Correlation-2 +tBodyAccJerk-Correlation-3 +tBodyGyro-Mean-1 +tBodyGyro-Mean-2 +tBodyGyro-Mean-3 +tBodyGyro-STD-1 +tBodyGyro-STD-2 +tBodyGyro-STD-3 +tBodyGyro-Mad-1 +tBodyGyro-Mad-2 +tBodyGyro-Mad-3 +tBodyGyro-Max-1 +tBodyGyro-Max-2 +tBodyGyro-Max-3 +tBodyGyro-Min-1 +tBodyGyro-Min-2 +tBodyGyro-Min-3 +tBodyGyro-SMA-1 +tBodyGyro-Energy-1 +tBodyGyro-Energy-2 +tBodyGyro-Energy-3 +tBodyGyro-IQR-1 +tBodyGyro-IQR-2 +tBodyGyro-IQR-3 +tBodyGyro-ropy-1 +tBodyGyro-ropy-1 +tBodyGyro-ropy-1 +tBodyGyro-ARCoeff-1 +tBodyGyro-ARCoeff-2 +tBodyGyro-ARCoeff-3 +tBodyGyro-ARCoeff-4 +tBodyGyro-ARCoeff-5 +tBodyGyro-ARCoeff-6 +tBodyGyro-ARCoeff-7 +tBodyGyro-ARCoeff-8 +tBodyGyro-ARCoeff-9 +tBodyGyro-ARCoeff-10 +tBodyGyro-ARCoeff-11 +tBodyGyro-ARCoeff-12 +tBodyGyro-Correlation-1 +tBodyGyro-Correlation-2 +tBodyGyro-Correlation-3 +tBodyGyroJerk-Mean-1 +tBodyGyroJerk-Mean-2 +tBodyGyroJerk-Mean-3 +tBodyGyroJerk-STD-1 +tBodyGyroJerk-STD-2 +tBodyGyroJerk-STD-3 +tBodyGyroJerk-Mad-1 +tBodyGyroJerk-Mad-2 +tBodyGyroJerk-Mad-3 +tBodyGyroJerk-Max-1 +tBodyGyroJerk-Max-2 +tBodyGyroJerk-Max-3 +tBodyGyroJerk-Min-1 +tBodyGyroJerk-Min-2 +tBodyGyroJerk-Min-3 +tBodyGyroJerk-SMA-1 +tBodyGyroJerk-Energy-1 +tBodyGyroJerk-Energy-2 +tBodyGyroJerk-Energy-3 +tBodyGyroJerk-IQR-1 +tBodyGyroJerk-IQR-2 +tBodyGyroJerk-IQR-3 +tBodyGyroJerk-ropy-1 +tBodyGyroJerk-ropy-1 +tBodyGyroJerk-ropy-1 +tBodyGyroJerk-ARCoeff-1 +tBodyGyroJerk-ARCoeff-2 +tBodyGyroJerk-ARCoeff-3 +tBodyGyroJerk-ARCoeff-4 +tBodyGyroJerk-ARCoeff-5 +tBodyGyroJerk-ARCoeff-6 +tBodyGyroJerk-ARCoeff-7 +tBodyGyroJerk-ARCoeff-8 +tBodyGyroJerk-ARCoeff-9 +tBodyGyroJerk-ARCoeff-10 +tBodyGyroJerk-ARCoeff-11 +tBodyGyroJerk-ARCoeff-12 +tBodyGyroJerk-Correlation-1 +tBodyGyroJerk-Correlation-2 +tBodyGyroJerk-Correlation-3 +tBodyAccMag-Mean-1 +tBodyAccMag-STD-1 +tBodyAccMag-Mad-1 +tBodyAccMag-Max-1 +tBodyAccMag-Min-1 +tBodyAccMag-SMA-1 +tBodyAccMag-Energy-1 +tBodyAccMag-IQR-1 +tBodyAccMag-ropy-1 +tBodyAccMag-ARCoeff-1 +tBodyAccMag-ARCoeff-2 +tBodyAccMag-ARCoeff-3 +tBodyAccMag-ARCoeff-4 +tGravityAccMag-Mean-1 +tGravityAccMag-STD-1 +tGravityAccMag-Mad-1 +tGravityAccMag-Max-1 +tGravityAccMag-Min-1 +tGravityAccMag-SMA-1 +tGravityAccMag-Energy-1 +tGravityAccMag-IQR-1 +tGravityAccMag-ropy-1 +tGravityAccMag-ARCoeff-1 +tGravityAccMag-ARCoeff-2 +tGravityAccMag-ARCoeff-3 +tGravityAccMag-ARCoeff-4 +tBodyAccJerkMag-Mean-1 +tBodyAccJerkMag-STD-1 +tBodyAccJerkMag-Mad-1 +tBodyAccJerkMag-Max-1 +tBodyAccJerkMag-Min-1 +tBodyAccJerkMag-SMA-1 +tBodyAccJerkMag-Energy-1 +tBodyAccJerkMag-IQR-1 +tBodyAccJerkMag-ropy-1 +tBodyAccJerkMag-ARCoeff-1 +tBodyAccJerkMag-ARCoeff-2 +tBodyAccJerkMag-ARCoeff-3 +tBodyAccJerkMag-ARCoeff-4 +tBodyGyroMag-Mean-1 +tBodyGyroMag-STD-1 +tBodyGyroMag-Mad-1 +tBodyGyroMag-Max-1 +tBodyGyroMag-Min-1 +tBodyGyroMag-SMA-1 +tBodyGyroMag-Energy-1 +tBodyGyroMag-IQR-1 +tBodyGyroMag-ropy-1 +tBodyGyroMag-ARCoeff-1 +tBodyGyroMag-ARCoeff-2 +tBodyGyroMag-ARCoeff-3 +tBodyGyroMag-ARCoeff-4 +tBodyGyroJerkMag-Mean-1 +tBodyGyroJerkMag-STD-1 +tBodyGyroJerkMag-Mad-1 +tBodyGyroJerkMag-Max-1 +tBodyGyroJerkMag-Min-1 +tBodyGyroJerkMag-SMA-1 +tBodyGyroJerkMag-Energy-1 +tBodyGyroJerkMag-IQR-1 +tBodyGyroJerkMag-ropy-1 +tBodyGyroJerkMag-ARCoeff-1 +tBodyGyroJerkMag-ARCoeff-2 +tBodyGyroJerkMag-ARCoeff-3 +tBodyGyroJerkMag-ARCoeff-4 +fBodyAcc-Mean-1 +fBodyAcc-Mean-2 +fBodyAcc-Mean-3 +fBodyAcc-STD-1 +fBodyAcc-STD-2 +fBodyAcc-STD-3 +fBodyAcc-Mad-1 +fBodyAcc-Mad-2 +fBodyAcc-Mad-3 +fBodyAcc-Max-1 +fBodyAcc-Max-2 +fBodyAcc-Max-3 +fBodyAcc-Min-1 +fBodyAcc-Min-2 +fBodyAcc-Min-3 +fBodyAcc-SMA-1 +fBodyAcc-Energy-1 +fBodyAcc-Energy-2 +fBodyAcc-Energy-3 +fBodyAcc-IQR-1 +fBodyAcc-IQR-2 +fBodyAcc-IQR-3 +fBodyAcc-ropy-1 +fBodyAcc-ropy-1 +fBodyAcc-ropy-1 +fBodyAcc-MaxInds-1 +fBodyAcc-MaxInds-2 +fBodyAcc-MaxInds-3 +fBodyAcc-MeanFreq-1 +fBodyAcc-MeanFreq-2 +fBodyAcc-MeanFreq-3 +fBodyAcc-Skewness-1 +fBodyAcc-Kurtosis-1 +fBodyAcc-Skewness-1 +fBodyAcc-Kurtosis-1 +fBodyAcc-Skewness-1 +fBodyAcc-Kurtosis-1 +fBodyAcc-BandsEnergyOld-1 +fBodyAcc-BandsEnergyOld-2 +fBodyAcc-BandsEnergyOld-3 +fBodyAcc-BandsEnergyOld-4 +fBodyAcc-BandsEnergyOld-5 +fBodyAcc-BandsEnergyOld-6 +fBodyAcc-BandsEnergyOld-7 +fBodyAcc-BandsEnergyOld-8 +fBodyAcc-BandsEnergyOld-9 +fBodyAcc-BandsEnergyOld-10 +fBodyAcc-BandsEnergyOld-11 +fBodyAcc-BandsEnergyOld-12 +fBodyAcc-BandsEnergyOld-13 +fBodyAcc-BandsEnergyOld-14 +fBodyAcc-BandsEnergyOld-15 +fBodyAcc-BandsEnergyOld-16 +fBodyAcc-BandsEnergyOld-17 +fBodyAcc-BandsEnergyOld-18 +fBodyAcc-BandsEnergyOld-19 +fBodyAcc-BandsEnergyOld-20 +fBodyAcc-BandsEnergyOld-21 +fBodyAcc-BandsEnergyOld-22 +fBodyAcc-BandsEnergyOld-23 +fBodyAcc-BandsEnergyOld-24 +fBodyAcc-BandsEnergyOld-25 +fBodyAcc-BandsEnergyOld-26 +fBodyAcc-BandsEnergyOld-27 +fBodyAcc-BandsEnergyOld-28 +fBodyAcc-BandsEnergyOld-29 +fBodyAcc-BandsEnergyOld-30 +fBodyAcc-BandsEnergyOld-31 +fBodyAcc-BandsEnergyOld-32 +fBodyAcc-BandsEnergyOld-33 +fBodyAcc-BandsEnergyOld-34 +fBodyAcc-BandsEnergyOld-35 +fBodyAcc-BandsEnergyOld-36 +fBodyAcc-BandsEnergyOld-37 +fBodyAcc-BandsEnergyOld-38 +fBodyAcc-BandsEnergyOld-39 +fBodyAcc-BandsEnergyOld-40 +fBodyAcc-BandsEnergyOld-41 +fBodyAcc-BandsEnergyOld-42 +fBodyAccJerk-Mean-1 +fBodyAccJerk-Mean-2 +fBodyAccJerk-Mean-3 +fBodyAccJerk-STD-1 +fBodyAccJerk-STD-2 +fBodyAccJerk-STD-3 +fBodyAccJerk-Mad-1 +fBodyAccJerk-Mad-2 +fBodyAccJerk-Mad-3 +fBodyAccJerk-Max-1 +fBodyAccJerk-Max-2 +fBodyAccJerk-Max-3 +fBodyAccJerk-Min-1 +fBodyAccJerk-Min-2 +fBodyAccJerk-Min-3 +fBodyAccJerk-SMA-1 +fBodyAccJerk-Energy-1 +fBodyAccJerk-Energy-2 +fBodyAccJerk-Energy-3 +fBodyAccJerk-IQR-1 +fBodyAccJerk-IQR-2 +fBodyAccJerk-IQR-3 +fBodyAccJerk-ropy-1 +fBodyAccJerk-ropy-1 +fBodyAccJerk-ropy-1 +fBodyAccJerk-MaxInds-1 +fBodyAccJerk-MaxInds-2 +fBodyAccJerk-MaxInds-3 +fBodyAccJerk-MeanFreq-1 +fBodyAccJerk-MeanFreq-2 +fBodyAccJerk-MeanFreq-3 +fBodyAccJerk-Skewness-1 +fBodyAccJerk-Kurtosis-1 +fBodyAccJerk-Skewness-1 +fBodyAccJerk-Kurtosis-1 +fBodyAccJerk-Skewness-1 +fBodyAccJerk-Kurtosis-1 +fBodyAccJerk-BandsEnergyOld-1 +fBodyAccJerk-BandsEnergyOld-2 +fBodyAccJerk-BandsEnergyOld-3 +fBodyAccJerk-BandsEnergyOld-4 +fBodyAccJerk-BandsEnergyOld-5 +fBodyAccJerk-BandsEnergyOld-6 +fBodyAccJerk-BandsEnergyOld-7 +fBodyAccJerk-BandsEnergyOld-8 +fBodyAccJerk-BandsEnergyOld-9 +fBodyAccJerk-BandsEnergyOld-10 +fBodyAccJerk-BandsEnergyOld-11 +fBodyAccJerk-BandsEnergyOld-12 +fBodyAccJerk-BandsEnergyOld-13 +fBodyAccJerk-BandsEnergyOld-14 +fBodyAccJerk-BandsEnergyOld-15 +fBodyAccJerk-BandsEnergyOld-16 +fBodyAccJerk-BandsEnergyOld-17 +fBodyAccJerk-BandsEnergyOld-18 +fBodyAccJerk-BandsEnergyOld-19 +fBodyAccJerk-BandsEnergyOld-20 +fBodyAccJerk-BandsEnergyOld-21 +fBodyAccJerk-BandsEnergyOld-22 +fBodyAccJerk-BandsEnergyOld-23 +fBodyAccJerk-BandsEnergyOld-24 +fBodyAccJerk-BandsEnergyOld-25 +fBodyAccJerk-BandsEnergyOld-26 +fBodyAccJerk-BandsEnergyOld-27 +fBodyAccJerk-BandsEnergyOld-28 +fBodyAccJerk-BandsEnergyOld-29 +fBodyAccJerk-BandsEnergyOld-30 +fBodyAccJerk-BandsEnergyOld-31 +fBodyAccJerk-BandsEnergyOld-32 +fBodyAccJerk-BandsEnergyOld-33 +fBodyAccJerk-BandsEnergyOld-34 +fBodyAccJerk-BandsEnergyOld-35 +fBodyAccJerk-BandsEnergyOld-36 +fBodyAccJerk-BandsEnergyOld-37 +fBodyAccJerk-BandsEnergyOld-38 +fBodyAccJerk-BandsEnergyOld-39 +fBodyAccJerk-BandsEnergyOld-40 +fBodyAccJerk-BandsEnergyOld-41 +fBodyAccJerk-BandsEnergyOld-42 +fBodyGyro-Mean-1 +fBodyGyro-Mean-2 +fBodyGyro-Mean-3 +fBodyGyro-STD-1 +fBodyGyro-STD-2 +fBodyGyro-STD-3 +fBodyGyro-Mad-1 +fBodyGyro-Mad-2 +fBodyGyro-Mad-3 +fBodyGyro-Max-1 +fBodyGyro-Max-2 +fBodyGyro-Max-3 +fBodyGyro-Min-1 +fBodyGyro-Min-2 +fBodyGyro-Min-3 +fBodyGyro-SMA-1 +fBodyGyro-Energy-1 +fBodyGyro-Energy-2 +fBodyGyro-Energy-3 +fBodyGyro-IQR-1 +fBodyGyro-IQR-2 +fBodyGyro-IQR-3 +fBodyGyro-ropy-1 +fBodyGyro-ropy-1 +fBodyGyro-ropy-1 +fBodyGyro-MaxInds-1 +fBodyGyro-MaxInds-2 +fBodyGyro-MaxInds-3 +fBodyGyro-MeanFreq-1 +fBodyGyro-MeanFreq-2 +fBodyGyro-MeanFreq-3 +fBodyGyro-Skewness-1 +fBodyGyro-Kurtosis-1 +fBodyGyro-Skewness-1 +fBodyGyro-Kurtosis-1 +fBodyGyro-Skewness-1 +fBodyGyro-Kurtosis-1 +fBodyGyro-BandsEnergyOld-1 +fBodyGyro-BandsEnergyOld-2 +fBodyGyro-BandsEnergyOld-3 +fBodyGyro-BandsEnergyOld-4 +fBodyGyro-BandsEnergyOld-5 +fBodyGyro-BandsEnergyOld-6 +fBodyGyro-BandsEnergyOld-7 +fBodyGyro-BandsEnergyOld-8 +fBodyGyro-BandsEnergyOld-9 +fBodyGyro-BandsEnergyOld-10 +fBodyGyro-BandsEnergyOld-11 +fBodyGyro-BandsEnergyOld-12 +fBodyGyro-BandsEnergyOld-13 +fBodyGyro-BandsEnergyOld-14 +fBodyGyro-BandsEnergyOld-15 +fBodyGyro-BandsEnergyOld-16 +fBodyGyro-BandsEnergyOld-17 +fBodyGyro-BandsEnergyOld-18 +fBodyGyro-BandsEnergyOld-19 +fBodyGyro-BandsEnergyOld-20 +fBodyGyro-BandsEnergyOld-21 +fBodyGyro-BandsEnergyOld-22 +fBodyGyro-BandsEnergyOld-23 +fBodyGyro-BandsEnergyOld-24 +fBodyGyro-BandsEnergyOld-25 +fBodyGyro-BandsEnergyOld-26 +fBodyGyro-BandsEnergyOld-27 +fBodyGyro-BandsEnergyOld-28 +fBodyGyro-BandsEnergyOld-29 +fBodyGyro-BandsEnergyOld-30 +fBodyGyro-BandsEnergyOld-31 +fBodyGyro-BandsEnergyOld-32 +fBodyGyro-BandsEnergyOld-33 +fBodyGyro-BandsEnergyOld-34 +fBodyGyro-BandsEnergyOld-35 +fBodyGyro-BandsEnergyOld-36 +fBodyGyro-BandsEnergyOld-37 +fBodyGyro-BandsEnergyOld-38 +fBodyGyro-BandsEnergyOld-39 +fBodyGyro-BandsEnergyOld-40 +fBodyGyro-BandsEnergyOld-41 +fBodyGyro-BandsEnergyOld-42 +fBodyAccMag-Mean-1 +fBodyAccMag-STD-1 +fBodyAccMag-Mad-1 +fBodyAccMag-Max-1 +fBodyAccMag-Min-1 +fBodyAccMag-SMA-1 +fBodyAccMag-Energy-1 +fBodyAccMag-IQR-1 +fBodyAccMag-ropy-1 +fBodyAccMag-MaxInds-1 +fBodyAccMag-MeanFreq-1 +fBodyAccMag-Skewness-1 +fBodyAccMag-Kurtosis-1 +fBodyAccJerkMag-Mean-1 +fBodyAccJerkMag-STD-1 +fBodyAccJerkMag-Mad-1 +fBodyAccJerkMag-Max-1 +fBodyAccJerkMag-Min-1 +fBodyAccJerkMag-SMA-1 +fBodyAccJerkMag-Energy-1 +fBodyAccJerkMag-IQR-1 +fBodyAccJerkMag-ropy-1 +fBodyAccJerkMag-MaxInds-1 +fBodyAccJerkMag-MeanFreq-1 +fBodyAccJerkMag-Skewness-1 +fBodyAccJerkMag-Kurtosis-1 +fBodyGyroMag-Mean-1 +fBodyGyroMag-STD-1 +fBodyGyroMag-Mad-1 +fBodyGyroMag-Max-1 +fBodyGyroMag-Min-1 +fBodyGyroMag-SMA-1 +fBodyGyroMag-Energy-1 +fBodyGyroMag-IQR-1 +fBodyGyroMag-ropy-1 +fBodyGyroMag-MaxInds-1 +fBodyGyroMag-MeanFreq-1 +fBodyGyroMag-Skewness-1 +fBodyGyroMag-Kurtosis-1 +fBodyGyroJerkMag-Mean-1 +fBodyGyroJerkMag-STD-1 +fBodyGyroJerkMag-Mad-1 +fBodyGyroJerkMag-Max-1 +fBodyGyroJerkMag-Min-1 +fBodyGyroJerkMag-SMA-1 +fBodyGyroJerkMag-Energy-1 +fBodyGyroJerkMag-IQR-1 +fBodyGyroJerkMag-ropy-1 +fBodyGyroJerkMag-MaxInds-1 +fBodyGyroJerkMag-MeanFreq-1 +fBodyGyroJerkMag-Skewness-1 +fBodyGyroJerkMag-Kurtosis-1 +tBodyAcc-AngleWRTGravity-1 +tBodyAccJerk-AngleWRTGravity-1 +tBodyGyro-AngleWRTGravity-1 +tBodyGyroJerk-AngleWRTGravity-1 +tXAxisAcc-AngleWRTGravity-1 +tYAxisAcc-AngleWRTGravity-1 +tZAxisAcc-AngleWRTGravity-1 diff --git a/data/features_info.txt b/data/features_info.txt new file mode 100644 index 0000000..ba88c54 --- /dev/null +++ b/data/features_info.txt @@ -0,0 +1,59 @@ +Feature Selection +================= + +The features selected for this database come from the accelerometer and gyroscope 3-axial raw signals tAcc-XYZ and tGyro-XYZ. These time domain signals (prefix 't' to denote time) were captured at a constant rate of 50 Hz. Then they were filtered using a median filter and a 3rd order low pass Butterworth filter with a corner frequency of 20 Hz to remove noise. Similarly, the acceleration signal was then separated into body and gravity acceleration signals (tBodyAcc-XYZ and tGravityAcc-XYZ) using another low pass Butterworth filter with a corner frequency of 0.3 Hz. + +Subsequently, the body linear acceleration and angular velocity were derived in time to obtain Jerk signals (tBodyAccJerk-XYZ and tBodyGyroJerk-XYZ). Also the magnitude of these three-dimensional signals were calculated using the Euclidean norm (tBodyAccMag, tGravityAccMag, tBodyAccJerkMag, tBodyGyroMag, tBodyGyroJerkMag). + +Finally a Fast Fourier Transform (FFT) was applied to some of these signals producing fBodyAcc-XYZ, fBodyAccJerk-XYZ, fBodyGyro-XYZ, fBodyAccJerkMag, fBodyGyroMag, fBodyGyroJerkMag. (Note the 'f' to indicate frequency domain signals). + +These signals were used to estimate variables of the feature vector for each pattern: +'-XYZ' is used to denote 3-axial signals in the X, Y and Z directions. + +tBodyAcc-XYZ +tGravityAcc-XYZ +tBodyAccJerk-XYZ +tBodyGyro-XYZ +tBodyGyroJerk-XYZ +tBodyAccMag +tGravityAccMag +tBodyAccJerkMag +tBodyGyroMag +tBodyGyroJerkMag +fBodyAcc-XYZ +fBodyAccJerk-XYZ +fBodyGyro-XYZ +fBodyAccMag +fBodyAccJerkMag +fBodyGyroMag +fBodyGyroJerkMag + +The set of variables that were estimated from these signals are: + +mean(): Mean value +std(): Standard deviation +mad(): Median absolute deviation +max(): Largest value in array +min(): Smallest value in array +sma(): Signal magnitude area +energy(): Energy measure. Sum of the squares divided by the number of values. +iqr(): Interquartile range +entropy(): Signal entropy +arCoeff(): Autorregresion coefficients with Burg order equal to 4 +correlation(): correlation coefficient between two signals +maxInds(): index of the frequency component with largest magnitude +meanFreq(): Weighted average of the frequency components to obtain a mean frequency +skewness(): skewness of the frequency domain signal +kurtosis(): kurtosis of the frequency domain signal +bandsEnergy(): Energy of a frequency interval within the 64 bins of the FFT of each window. +angle(): Angle between to vectors. + +Additional vectors obtained by averaging the signals in a signal window sample. These are used on the angle() variable: + +gravityMean +tBodyAccMean +tBodyAccJerkMean +tBodyGyroMean +tBodyGyroJerkMean + +The complete list of variables of each feature vector is available in 'features.txt' diff --git a/preProc/reWriteData.py b/preProc/reWriteData.py index 016d543..cb95d73 100644 --- a/preProc/reWriteData.py +++ b/preProc/reWriteData.py @@ -1,33 +1,34 @@ import os import numpy as np import pandas as pd import sys import matplotlib.pyplot as plt def extractExpSubjSensor(fileName): name = os.path.basename(fileName).split(".")[0] temp = name.find("exp")+len("exp") expNo = int(name[temp:temp+2]) temp = name.find("user")+len("user") subjNo = int(name[temp:temp+2]) temp = name.find("_exp") sensor = name[0:temp] return expNo,subjNo,sensor if __name__ == "__main__": filenames = [os.path.join("../data/RawData",x) for x in os.listdir("../data/RawData") if ".txt" in x and "user" in x] labels = pd.read_csv("../data/RawData/labels.txt", names = ["experiment","subject","label","start","end"],sep = " ") for f in filenames: exp,subj, sensor = extractExpSubjSensor(f) fileToSave = "../data/dataLabeld/"+str(exp)+sensor+".csv" labelsThisExp = labels.loc[labels["experiment"] == exp] dfFile = pd.read_csv(f,names = ["x","y","z"],sep = " ") dfFile["lbl"] = -1 for lbl in labelsThisExp.iterrows(): start = lbl[1]["start"] stop = lbl[1]["end"] l = lbl[1]["label"] dfFile.loc[start:stop,"lbl"] = l unlabeldLen = len(dfFile.loc[dfFile["lbl"] == -1]) + dfFile.to_csv(fileToSave,index = False) print("Wrote: {}. File is {}s long, total unlabeld time {}s (unlabeld percentage: {})".format(fileToSave, len(dfFile)/50, unlabeldLen/50,100*(unlabeldLen/50)/(len(dfFile)/50))) \ No newline at end of file