1. Setting the Default Working Directory

# Now there are two ways I can commit this project on my github account
# 1. I can use an  R Project in RStudio and Through Version Control, I can directly commit to github
#    which is very easy for me but I dont know about peers if they are aware of this method
# 2. Other Method is that I set my working directory to the cloned-from-github-on-my-laptop folder 
#    in which first I have to create a "New Repository" on github account, and then using github desktop
#    version I clone that repository on my laptop and then set it as my working directory for R. 

# For ease I will use 2nd option.

# Therefore, let us set the working directory as clonned git repository, which on my laptop is
setwd("C:/Users/Manu/Documents/GitHub/practicalmachinelearning/")

2. Loading All the Required Library

# Before downloading the data and use it for the project,
# lets load the required libraries and create environment
library(Hmisc)
library(caret)
library(randomForest)
library(foreach)
library(doParallel)

3. Downloading Files in the Default Folder

#The training data for this project are available here: 
# https://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv

# And The test data are available here: 
# https://d396qusza40orc.cloudfront.net/predmachlearn/pml-testing.csv

# Download the training data from the URL as mentioned above, to the destination (default) folder
# download.file("https://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv", destfile = "./pml-training.csv")

# Similarly, download the test data from the URL as mentioned above, to the destination (default) folder
# download.file("http://d396qusza40orc.cloudfront.net/predmachlearn/pml-testing.csv", destfile = "./pml-testing.csv")

4. Setting Default Global Options

# Set Default Options
set.seed(2048)
options(warn = -1)

5. Loading Training and Test Data Sets

# Read training data and wherever we have "#DIV/0!" in the dataset, set them as "NA"
TrainingData = read.csv("pml-training.csv", na.strings = c("#DIV/0!"))

# Similarly, read test data and do the operation as above
TestData = read.csv("pml-testing.csv", na.strings = c("#DIV/0!"))

6. Cleaning Datasets to make Workable

# Dimensions of the training data
dim(TrainingData)
## [1] 19622   160
# Check the structure of the training data
str(TrainingData)
## 'data.frame':    19622 obs. of  160 variables:
##  $ X                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ user_name               : Factor w/ 6 levels "adelmo","carlitos",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ raw_timestamp_part_1    : int  1323084231 1323084231 1323084231 1323084232 1323084232 1323084232 1323084232 1323084232 1323084232 1323084232 ...
##  $ raw_timestamp_part_2    : int  788290 808298 820366 120339 196328 304277 368296 440390 484323 484434 ...
##  $ cvtd_timestamp          : Factor w/ 20 levels "02/12/2011 13:32",..: 9 9 9 9 9 9 9 9 9 9 ...
##  $ new_window              : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ num_window              : int  11 11 11 12 12 12 12 12 12 12 ...
##  $ roll_belt               : num  1.41 1.41 1.42 1.48 1.48 1.45 1.42 1.42 1.43 1.45 ...
##  $ pitch_belt              : num  8.07 8.07 8.07 8.05 8.07 8.06 8.09 8.13 8.16 8.17 ...
##  $ yaw_belt                : num  -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 ...
##  $ total_accel_belt        : int  3 3 3 3 3 3 3 3 3 3 ...
##  $ kurtosis_roll_belt      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_picth_belt     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_yaw_belt       : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_belt      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_roll_belt.1    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_yaw_belt       : logi  NA NA NA NA NA NA ...
##  $ max_roll_belt           : Factor w/ 196 levels "-0.2","-0.4",..: 196 196 196 196 196 196 196 196 196 196 ...
##  $ max_picth_belt          : Factor w/ 23 levels "10","11","17",..: 23 23 23 23 23 23 23 23 23 23 ...
##  $ max_yaw_belt            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_roll_belt           : Factor w/ 185 levels "-0.2","-0.5",..: 185 185 185 185 185 185 185 185 185 185 ...
##  $ min_pitch_belt          : Factor w/ 17 levels "0","1","15","16",..: 17 17 17 17 17 17 17 17 17 17 ...
##  $ min_yaw_belt            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_roll_belt     : Factor w/ 149 levels "0","0.1","0.13",..: 149 149 149 149 149 149 149 149 149 149 ...
##  $ amplitude_pitch_belt    : Factor w/ 14 levels "0","1","10","11",..: 14 14 14 14 14 14 14 14 14 14 ...
##  $ amplitude_yaw_belt      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_total_accel_belt    : Factor w/ 66 levels "0","0.0217","0.0278",..: 66 66 66 66 66 66 66 66 66 66 ...
##  $ avg_roll_belt           : Factor w/ 192 levels "-0.2","-0.3",..: 192 192 192 192 192 192 192 192 192 192 ...
##  $ stddev_roll_belt        : Factor w/ 70 levels "0","0.091","0.0957",..: 70 70 70 70 70 70 70 70 70 70 ...
##  $ var_roll_belt           : Factor w/ 97 levels "0","0.0083","0.0092",..: 97 97 97 97 97 97 97 97 97 97 ...
##  $ avg_pitch_belt          : Factor w/ 215 levels "-0.2","-0.4",..: 215 215 215 215 215 215 215 215 215 215 ...
##  $ stddev_pitch_belt       : Factor w/ 44 levels "0","0.0571","0.1",..: 44 44 44 44 44 44 44 44 44 44 ...
##  $ var_pitch_belt          : Factor w/ 64 levels "0","0.0033","0.0393",..: 64 64 64 64 64 64 64 64 64 64 ...
##  $ avg_yaw_belt            : Factor w/ 241 levels "-0.1","-0.7",..: 241 241 241 241 241 241 241 241 241 241 ...
##  $ stddev_yaw_belt         : Factor w/ 59 levels "0","0.0407","0.0522",..: 59 59 59 59 59 59 59 59 59 59 ...
##  $ var_yaw_belt            : Factor w/ 146 levels "0","0.0017","0.0027",..: 146 146 146 146 146 146 146 146 146 146 ...
##  $ gyros_belt_x            : num  0 0.02 0 0.02 0.02 0.02 0.02 0.02 0.02 0.03 ...
##  $ gyros_belt_y            : num  0 0 0 0 0.02 0 0 0 0 0 ...
##  $ gyros_belt_z            : num  -0.02 -0.02 -0.02 -0.03 -0.02 -0.02 -0.02 -0.02 -0.02 0 ...
##  $ accel_belt_x            : int  -21 -22 -20 -22 -21 -21 -22 -22 -20 -21 ...
##  $ accel_belt_y            : int  4 4 5 3 2 4 3 4 2 4 ...
##  $ accel_belt_z            : int  22 22 23 21 24 21 21 21 24 22 ...
##  $ magnet_belt_x           : int  -3 -7 -2 -6 -6 0 -4 -2 1 -3 ...
##  $ magnet_belt_y           : int  599 608 600 604 600 603 599 603 602 609 ...
##  $ magnet_belt_z           : int  -313 -311 -305 -310 -302 -312 -311 -313 -312 -308 ...
##  $ roll_arm                : num  -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 ...
##  $ pitch_arm               : num  22.5 22.5 22.5 22.1 22.1 22 21.9 21.8 21.7 21.6 ...
##  $ yaw_arm                 : num  -161 -161 -161 -161 -161 -161 -161 -161 -161 -161 ...
##  $ total_accel_arm         : int  34 34 34 34 34 34 34 34 34 34 ...
##  $ var_accel_arm           : Factor w/ 396 levels "0","0.0179","0.02",..: 396 396 396 396 396 396 396 396 396 396 ...
##  $ avg_roll_arm            : Factor w/ 331 levels "-0.7853","-1.9176",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ stddev_roll_arm         : Factor w/ 331 levels "0","0.05","0.1081",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ var_roll_arm            : Factor w/ 331 levels "0","0.0025","0.0117",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ avg_pitch_arm           : Factor w/ 331 levels "-0.3724","-0.4137",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ stddev_pitch_arm        : Factor w/ 331 levels "0","0.0153","0.135",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ var_pitch_arm           : Factor w/ 331 levels "0","0.0182","0.0275",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ avg_yaw_arm             : Factor w/ 331 levels "-0.0188","-0.07",..: 331 331 331 331 331 331 331 331 331 331 ...
##  $ stddev_yaw_arm          : Factor w/ 328 levels "0","0.3471","0.3594",..: 328 328 328 328 328 328 328 328 328 328 ...
##  $ var_yaw_arm             : Factor w/ 328 levels "0","0.1205","0.1292",..: 328 328 328 328 328 328 328 328 328 328 ...
##  $ gyros_arm_x             : num  0 0.02 0.02 0.02 0 0.02 0 0.02 0.02 0.02 ...
##  $ gyros_arm_y             : num  0 -0.02 -0.02 -0.03 -0.03 -0.03 -0.03 -0.02 -0.03 -0.03 ...
##  $ gyros_arm_z             : num  -0.02 -0.02 -0.02 0.02 0 0 0 0 -0.02 -0.02 ...
##  $ accel_arm_x             : int  -288 -290 -289 -289 -289 -289 -289 -289 -288 -288 ...
##  $ accel_arm_y             : int  109 110 110 111 111 111 111 111 109 110 ...
##  $ accel_arm_z             : int  -123 -125 -126 -123 -123 -122 -125 -124 -122 -124 ...
##  $ magnet_arm_x            : int  -368 -369 -368 -372 -374 -369 -373 -372 -369 -376 ...
##  $ magnet_arm_y            : int  337 337 344 344 337 342 336 338 341 334 ...
##  $ magnet_arm_z            : int  516 513 513 512 506 513 509 510 518 516 ...
##  $ kurtosis_roll_arm       : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_picth_arm      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_yaw_arm        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_roll_arm       : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_pitch_arm      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_yaw_arm        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_roll_arm            : Factor w/ 291 levels "-0.1","-0.2",..: 291 291 291 291 291 291 291 291 291 291 ...
##  $ max_picth_arm           : Factor w/ 264 levels "-0.8","-1.8",..: 264 264 264 264 264 264 264 264 264 264 ...
##  $ max_yaw_arm             : Factor w/ 52 levels "13","14","15",..: 52 52 52 52 52 52 52 52 52 52 ...
##  $ min_roll_arm            : Factor w/ 279 levels "-0.2","-0.6",..: 279 279 279 279 279 279 279 279 279 279 ...
##  $ min_pitch_arm           : Factor w/ 291 levels "-1","-1.2","-10.4",..: 291 291 291 291 291 291 291 291 291 291 ...
##  $ min_yaw_arm             : Factor w/ 39 levels "1","10","11",..: 39 39 39 39 39 39 39 39 39 39 ...
##  $ amplitude_roll_arm      : Factor w/ 307 levels "0","0.03","0.5",..: 307 307 307 307 307 307 307 307 307 307 ...
##  $ amplitude_pitch_arm     : Factor w/ 295 levels "0","1","10","10.4",..: 295 295 295 295 295 295 295 295 295 295 ...
##  $ amplitude_yaw_arm       : Factor w/ 52 levels "0","1","10","11",..: 52 52 52 52 52 52 52 52 52 52 ...
##  $ roll_dumbbell           : num  13.1 13.1 12.9 13.4 13.4 ...
##  $ pitch_dumbbell          : num  -70.5 -70.6 -70.3 -70.4 -70.4 ...
##  $ yaw_dumbbell            : num  -84.9 -84.7 -85.1 -84.9 -84.9 ...
##  $ kurtosis_roll_dumbbell  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_picth_dumbbell : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ kurtosis_yaw_dumbbell   : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_dumbbell  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_pitch_dumbbell : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ skewness_yaw_dumbbell   : logi  NA NA NA NA NA NA ...
##  $ max_roll_dumbbell       : Factor w/ 339 levels "-10.1","-11.1",..: 339 339 339 339 339 339 339 339 339 339 ...
##  $ max_picth_dumbbell      : Factor w/ 340 levels "-100.1","-100.3",..: 340 340 340 340 340 340 340 340 340 340 ...
##  $ max_yaw_dumbbell        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_roll_dumbbell       : Factor w/ 333 levels "-1","-1.2","-10.1",..: 333 333 333 333 333 333 333 333 333 333 ...
##  $ min_pitch_dumbbell      : Factor w/ 357 levels "-1.5","-10.5",..: 357 357 357 357 357 357 357 357 357 357 ...
##  $ min_yaw_dumbbell        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_roll_dumbbell : Factor w/ 388 levels "0","0.96","1",..: 388 388 388 388 388 388 388 388 388 388 ...
##   [list output truncated]
# Summary of the training data
summary(TrainingData)
##        X            user_name    raw_timestamp_part_1 raw_timestamp_part_2
##  Min.   :    1   adelmo  :3892   Min.   :1.322e+09    Min.   :   294      
##  1st Qu.: 4906   carlitos:3112   1st Qu.:1.323e+09    1st Qu.:252912      
##  Median : 9812   charles :3536   Median :1.323e+09    Median :496380      
##  Mean   : 9812   eurico  :3070   Mean   :1.323e+09    Mean   :500656      
##  3rd Qu.:14717   jeremy  :3402   3rd Qu.:1.323e+09    3rd Qu.:751891      
##  Max.   :19622   pedro   :2610   Max.   :1.323e+09    Max.   :998801      
##                                                                           
##           cvtd_timestamp  new_window    num_window      roll_belt     
##  28/11/2011 14:14: 1498   no :19216   Min.   :  1.0   Min.   :-28.90  
##  05/12/2011 11:24: 1497   yes:  406   1st Qu.:222.0   1st Qu.:  1.10  
##  30/11/2011 17:11: 1440               Median :424.0   Median :113.00  
##  05/12/2011 11:25: 1425               Mean   :430.6   Mean   : 64.41  
##  02/12/2011 14:57: 1380               3rd Qu.:644.0   3rd Qu.:123.00  
##  02/12/2011 13:34: 1375               Max.   :864.0   Max.   :162.00  
##  (Other)         :11007                                               
##    pitch_belt          yaw_belt       total_accel_belt kurtosis_roll_belt
##  Min.   :-55.8000   Min.   :-180.00   Min.   : 0.00    Min.   :-2.121    
##  1st Qu.:  1.7600   1st Qu.: -88.30   1st Qu.: 3.00    1st Qu.:-1.329    
##  Median :  5.2800   Median : -13.00   Median :17.00    Median :-0.899    
##  Mean   :  0.3053   Mean   : -11.21   Mean   :11.31    Mean   :-0.220    
##  3rd Qu.: 14.9000   3rd Qu.:  12.90   3rd Qu.:18.00    3rd Qu.:-0.219    
##  Max.   : 60.3000   Max.   : 179.00   Max.   :29.00    Max.   :33.000    
##                                                        NA's   :19226     
##  kurtosis_picth_belt kurtosis_yaw_belt skewness_roll_belt
##  Min.   :-2.190      Mode:logical      Min.   :-5.745    
##  1st Qu.:-1.107      NA's:19622        1st Qu.:-0.444    
##  Median :-0.151                        Median : 0.000    
##  Mean   : 4.334                        Mean   :-0.026    
##  3rd Qu.: 3.178                        3rd Qu.: 0.417    
##  Max.   :58.000                        Max.   : 3.595    
##  NA's   :19248                         NA's   :19225     
##  skewness_roll_belt.1 skewness_yaw_belt max_roll_belt   max_picth_belt 
##  Min.   :-7.616       Mode:logical      NA     :19216   NA     :19216  
##  1st Qu.:-1.114       NA's:19622        -87.9  :   11   18     :  100  
##  Median :-0.068                         166    :   11   5      :   65  
##  Mean   :-0.296                         -87.6  :   10   3      :   50  
##  3rd Qu.: 0.661                         -87.7  :   10   4      :   40  
##  Max.   : 7.348                         -88.2  :   10   20     :   36  
##  NA's   :19248                          (Other):  354   (Other):  115  
##   max_yaw_belt   min_roll_belt   min_pitch_belt   min_yaw_belt  
##  Min.   :-2.10   NA     :19216   NA     :19216   Min.   :-2.10  
##  1st Qu.:-1.30   -87.8  :   12   17     :  114   1st Qu.:-1.30  
##  Median :-0.90   -88.2  :   12   2      :   52   Median :-0.90  
##  Mean   :-0.22   -87.7  :   10   3      :   50   Mean   :-0.22  
##  3rd Qu.:-0.20   161    :   10   4      :   50   3rd Qu.:-0.20  
##  Max.   :33.00   -88.4  :    9   18     :   45   Max.   :33.00  
##  NA's   :19226   (Other):  353   (Other):   95   NA's   :19226  
##  amplitude_roll_belt amplitude_pitch_belt amplitude_yaw_belt
##  NA     :19216       NA     :19216        Min.   :0         
##  0.2    :   40       1      :  216        1st Qu.:0         
##  1      :   31       2      :   71        Median :0         
##  0.3    :   27       0      :   32        Mean   :0         
##  0.1    :   26       3      :   18        3rd Qu.:0         
##  0.4    :   18       4      :   13        Max.   :0         
##  (Other):  264       (Other):   56        NA's   :19226     
##  var_total_accel_belt avg_roll_belt   stddev_roll_belt var_roll_belt  
##  NA     :19216        NA     :19216   NA     :19216    NA     :19216  
##  0.2    :  117        1.3    :   16   0.1    :   53    0      :  126  
##  0.1    :   82        1.1    :   15   0.4    :   51    0.1    :   78  
##  0      :   59        1.5    :   15   0.5    :   50    0.2    :   56  
##  0.3    :   52        0.7    :   14   0.2    :   46    0.3    :   23  
##  0.4    :    8        0.8    :   14   0.3    :   41    0.4    :   10  
##  (Other):   88        (Other):  332   (Other):  165    (Other):  113  
##  avg_pitch_belt  stddev_pitch_belt var_pitch_belt   avg_yaw_belt  
##  NA     :19216   NA     :19216     NA     :19216   NA     :19216  
##  4.5    :   11   0.2    :   72     0      :  119   -88    :   12  
##  -43.6  :    8   0.3    :   62     0.1    :   91   -87.9  :   10  
##  4.6    :    8   0.1    :   57     0.2    :   38   -88.2  :   10  
##  5      :    8   0.4    :   38     0.3    :   22   -87.7  :    9  
##  25.5   :    7   0.5    :   24     0.4    :   14   -87.8  :    7  
##  (Other):  364   (Other):  153     (Other):  122   (Other):  358  
##  stddev_yaw_belt  var_yaw_belt    gyros_belt_x        gyros_belt_y     
##  NA     :19216   NA     :19216   Min.   :-1.040000   Min.   :-0.64000  
##  0.1    :   83   0      :   66   1st Qu.:-0.030000   1st Qu.: 0.00000  
##  0.2    :   49   0.01   :   44   Median : 0.030000   Median : 0.02000  
##  0      :   44   0.02   :   24   Mean   :-0.005592   Mean   : 0.03959  
##  0.5    :   35   0.03   :   16   3rd Qu.: 0.110000   3rd Qu.: 0.11000  
##  0.4    :   32   0.25   :   13   Max.   : 2.220000   Max.   : 0.64000  
##  (Other):  163   (Other):  243                                         
##   gyros_belt_z      accel_belt_x       accel_belt_y     accel_belt_z    
##  Min.   :-1.4600   Min.   :-120.000   Min.   :-69.00   Min.   :-275.00  
##  1st Qu.:-0.2000   1st Qu.: -21.000   1st Qu.:  3.00   1st Qu.:-162.00  
##  Median :-0.1000   Median : -15.000   Median : 35.00   Median :-152.00  
##  Mean   :-0.1305   Mean   :  -5.595   Mean   : 30.15   Mean   : -72.59  
##  3rd Qu.:-0.0200   3rd Qu.:  -5.000   3rd Qu.: 61.00   3rd Qu.:  27.00  
##  Max.   : 1.6200   Max.   :  85.000   Max.   :164.00   Max.   : 105.00  
##                                                                         
##  magnet_belt_x   magnet_belt_y   magnet_belt_z       roll_arm      
##  Min.   :-52.0   Min.   :354.0   Min.   :-623.0   Min.   :-180.00  
##  1st Qu.:  9.0   1st Qu.:581.0   1st Qu.:-375.0   1st Qu.: -31.77  
##  Median : 35.0   Median :601.0   Median :-320.0   Median :   0.00  
##  Mean   : 55.6   Mean   :593.7   Mean   :-345.5   Mean   :  17.83  
##  3rd Qu.: 59.0   3rd Qu.:610.0   3rd Qu.:-306.0   3rd Qu.:  77.30  
##  Max.   :485.0   Max.   :673.0   Max.   : 293.0   Max.   : 180.00  
##                                                                    
##    pitch_arm          yaw_arm          total_accel_arm var_accel_arm  
##  Min.   :-88.800   Min.   :-180.0000   Min.   : 1.00   NA     :19216  
##  1st Qu.:-25.900   1st Qu.: -43.1000   1st Qu.:17.00   0      :   11  
##  Median :  0.000   Median :   0.0000   Median :27.00   0.1582 :    2  
##  Mean   : -4.612   Mean   :  -0.6188   Mean   :25.51   0.0179 :    1  
##  3rd Qu.: 11.200   3rd Qu.:  45.8750   3rd Qu.:33.00   0.02   :    1  
##  Max.   : 88.500   Max.   : 180.0000   Max.   :66.00   0.0222 :    1  
##                                                        (Other):  390  
##    avg_roll_arm   stddev_roll_arm  var_roll_arm   avg_pitch_arm  
##  NA      :19216   NA     :19216   NA     :19216   NA     :19216  
##  0       :   77   0      :   77   0      :   77   0      :   77  
##  -0.7853 :    1   0.05   :    1   0.0025 :    1   -0.3724:    1  
##  -1.9176 :    1   0.1081 :    1   0.0117 :    1   -0.4137:    1  
##  -10.8644:    1   0.2323 :    1   0.054  :    1   -0.5892:    1  
##  -10.9094:    1   0.3331 :    1   0.111  :    1   -0.6586:    1  
##  (Other) :  325   (Other):  325   (Other):  325   (Other):  325  
##  stddev_pitch_arm var_pitch_arm     avg_yaw_arm    stddev_yaw_arm 
##  NA     :19216    NA     :19216   NA      :19216   NA     :19216  
##  0      :   77    0      :   77   0       :   77   0      :   80  
##  0.0153 :    1    0.0182 :    1   -0.0188 :    1   0.3471 :    1  
##  0.135  :    1    0.0275 :    1   -0.07   :    1   0.3594 :    1  
##  0.1657 :    1    0.0488 :    1   -10.4154:    1   0.4552 :    1  
##  0.2209 :    1    0.067  :    1   -10.8806:    1   0.4871 :    1  
##  (Other):  325    (Other):  325   (Other) :  325   (Other):  322  
##   var_yaw_arm     gyros_arm_x        gyros_arm_y       gyros_arm_z     
##  NA     :19216   Min.   :-6.37000   Min.   :-3.4400   Min.   :-2.3300  
##  0      :   80   1st Qu.:-1.33000   1st Qu.:-0.8000   1st Qu.:-0.0700  
##  0.1205 :    1   Median : 0.08000   Median :-0.2400   Median : 0.2300  
##  0.1292 :    1   Mean   : 0.04277   Mean   :-0.2571   Mean   : 0.2695  
##  0.2072 :    1   3rd Qu.: 1.57000   3rd Qu.: 0.1400   3rd Qu.: 0.7200  
##  0.2373 :    1   Max.   : 4.87000   Max.   : 2.8400   Max.   : 3.0200  
##  (Other):  322                                                         
##   accel_arm_x       accel_arm_y      accel_arm_z       magnet_arm_x   
##  Min.   :-404.00   Min.   :-318.0   Min.   :-636.00   Min.   :-584.0  
##  1st Qu.:-242.00   1st Qu.: -54.0   1st Qu.:-143.00   1st Qu.:-300.0  
##  Median : -44.00   Median :  14.0   Median : -47.00   Median : 289.0  
##  Mean   : -60.24   Mean   :  32.6   Mean   : -71.25   Mean   : 191.7  
##  3rd Qu.:  84.00   3rd Qu.: 139.0   3rd Qu.:  23.00   3rd Qu.: 637.0  
##  Max.   : 437.00   Max.   : 308.0   Max.   : 292.00   Max.   : 782.0  
##                                                                       
##   magnet_arm_y     magnet_arm_z    kurtosis_roll_arm kurtosis_picth_arm
##  Min.   :-392.0   Min.   :-597.0   Min.   :-1.809    Min.   :-2.084    
##  1st Qu.:  -9.0   1st Qu.: 131.2   1st Qu.:-1.345    1st Qu.:-1.280    
##  Median : 202.0   Median : 444.0   Median :-0.894    Median :-1.010    
##  Mean   : 156.6   Mean   : 306.5   Mean   :-0.366    Mean   :-0.542    
##  3rd Qu.: 323.0   3rd Qu.: 545.0   3rd Qu.:-0.038    3rd Qu.:-0.379    
##  Max.   : 583.0   Max.   : 694.0   Max.   :21.456    Max.   :19.751    
##                                    NA's   :19294     NA's   :19296     
##  kurtosis_yaw_arm skewness_roll_arm skewness_pitch_arm skewness_yaw_arm
##  Min.   :-2.103   Min.   :-2.541    Min.   :-4.565     Min.   :-6.708  
##  1st Qu.:-1.220   1st Qu.:-0.561    1st Qu.:-0.618     1st Qu.:-0.743  
##  Median :-0.733   Median : 0.040    Median :-0.035     Median :-0.133  
##  Mean   : 0.406   Mean   : 0.068    Mean   :-0.065     Mean   :-0.229  
##  3rd Qu.: 0.115   3rd Qu.: 0.671    3rd Qu.: 0.454     3rd Qu.: 0.344  
##  Max.   :56.000   Max.   : 4.394    Max.   : 3.043     Max.   : 7.483  
##  NA's   :19227    NA's   :19293     NA's   :19296      NA's   :19227   
##   max_roll_arm   max_picth_arm    max_yaw_arm     min_roll_arm  
##  NA     :19216   NA     :19216   NA     :19216   NA     :19216  
##  0      :   77   0      :   77   32     :   27   0      :   77  
##  16.8   :    3   108    :    6   33     :   22   -41.9  :    4  
##  20.4   :    3   113    :    5   30     :   19   -23.1  :    3  
##  30.5   :    3   102    :    4   34     :   19   -37.1  :    3  
##  8.5    :    3   103    :    4   31     :   18   -43.5  :    3  
##  (Other):  317   (Other):  310   (Other):  301   (Other):  316  
##  min_pitch_arm    min_yaw_arm    amplitude_roll_arm amplitude_pitch_arm
##  NA     :19216   NA     :19216   NA     :19216      NA     :19216      
##  0      :   77   10     :   26   0      :   77      0      :   80      
##  -113   :    4   5      :   26   1.3    :    3      1      :    4      
##  -103   :    3   13     :   25   15.7   :    3      125.2  :    3      
##  -104   :    3   14     :   22   1.6    :    2      132.8  :    3      
##  -108   :    3   7      :   21   17.9   :    2      2      :    3      
##  (Other):  316   (Other):  286   (Other):  319      (Other):  313      
##  amplitude_yaw_arm roll_dumbbell     pitch_dumbbell     yaw_dumbbell     
##  NA     :19216     Min.   :-153.71   Min.   :-149.59   Min.   :-150.871  
##  1      :   28     1st Qu.: -18.49   1st Qu.: -40.89   1st Qu.: -77.644  
##  22     :   27     Median :  48.17   Median : -20.96   Median :  -3.324  
##  21     :   18     Mean   :  23.84   Mean   : -10.78   Mean   :   1.674  
##  24     :   17     3rd Qu.:  67.61   3rd Qu.:  17.50   3rd Qu.:  79.643  
##  25     :   17     Max.   : 153.55   Max.   : 149.40   Max.   : 154.952  
##  (Other):  299                                                           
##  kurtosis_roll_dumbbell kurtosis_picth_dumbbell kurtosis_yaw_dumbbell
##  Min.   :-2.174         Min.   :-2.200          Mode:logical         
##  1st Qu.:-0.682         1st Qu.:-0.721          NA's:19622           
##  Median :-0.033         Median :-0.133                               
##  Mean   : 0.452         Mean   : 0.286                               
##  3rd Qu.: 0.940         3rd Qu.: 0.584                               
##  Max.   :54.998         Max.   :55.628                               
##  NA's   :19221          NA's   :19218                                
##  skewness_roll_dumbbell skewness_pitch_dumbbell skewness_yaw_dumbbell
##  Min.   :-7.384         Min.   :-7.447          Mode:logical         
##  1st Qu.:-0.581         1st Qu.:-0.526          NA's:19622           
##  Median :-0.076         Median :-0.091                               
##  Mean   :-0.115         Mean   :-0.035                               
##  3rd Qu.: 0.400         3rd Qu.: 0.505                               
##  Max.   : 1.958         Max.   : 3.769                               
##  NA's   :19220          NA's   :19217                                
##  max_roll_dumbbell max_picth_dumbbell max_yaw_dumbbell min_roll_dumbbell
##  NA     :19216     NA     :19216      Min.   :-2.20    NA     :19216    
##  -36.4  :    4     14.7   :    4      1st Qu.:-0.70    -59    :    4    
##  -38.2  :    4     -38.2  :    3      Median : 0.00    0      :    4    
##  -49.4  :    4     101.2  :    3      Mean   : 0.45    -32.7  :    3    
##  -49.7  :    3     126.4  :    3      3rd Qu.: 0.90    -33.1  :    3    
##  16.8   :    3     134.9  :    3      Max.   :55.00    -38    :    3    
##  (Other):  388     (Other):  390      NA's   :19221    (Other):  389    
##  min_pitch_dumbbell min_yaw_dumbbell amplitude_roll_dumbbell
##  NA     :19216      Min.   :-2.20    NA     :19216          
##  0      :    5      1st Qu.:-0.70    0      :   16          
##  -22.4  :    3      Median : 0.00    19.31  :    2          
##  -38.2  :    3      Mean   : 0.45    2.72   :    2          
##  -81.6  :    3      3rd Qu.: 0.90    20.11  :    2          
##  -85.8  :    3      Max.   :55.00    29.48  :    2          
##  (Other):  389      NA's   :19221    (Other):  382          
##  amplitude_pitch_dumbbell amplitude_yaw_dumbbell total_accel_dumbbell
##  NA     :19216            Min.   :0              Min.   : 0.00       
##  0      :   16            1st Qu.:0              1st Qu.: 4.00       
##  118.4  :    2            Median :0              Median :10.00       
##  13.45  :    2            Mean   :0              Mean   :13.72       
##  21.76  :    2            3rd Qu.:0              3rd Qu.:19.00       
##  23.88  :    2            Max.   :0              Max.   :58.00       
##  (Other):  382            NA's   :19221                              
##  var_accel_dumbbell avg_roll_dumbbell stddev_roll_dumbbell
##  NA     :19216      NA       :19216   NA     :19216       
##  0      :   18      -101.5169:    3   0      :   16       
##  0.1949 :    3      125.9932 :    3   0.1811 :    1       
##  0.0217 :    2      52.66    :    3   0.2994 :    1       
##  0.4311 :    2      -107.4901:    2   0.3015 :    1       
##  1.3929 :    2      109.2254 :    2   0.3665 :    1       
##  (Other):  379      (Other)  :  393   (Other):  386       
##  var_roll_dumbbell avg_pitch_dumbbell stddev_pitch_dumbbell
##  NA     :19216     NA      :19216     NA     :19216        
##  0      :   16     -38.2221:    3     0      :   16        
##  0.0328 :    1     16.8326 :    3     0.2384 :    1        
##  0.0896 :    1     27.1869 :    3     0.246  :    1        
##  0.0909 :    1     -43.9609:    2     0.2687 :    1        
##  0.1343 :    1     -61.3062:    2     0.2798 :    1        
##  (Other):  386     (Other) :  393     (Other):  386        
##  var_pitch_dumbbell avg_yaw_dumbbell stddev_yaw_dumbbell var_yaw_dumbbell
##  NA     :19216      NA      :19216   NA     :19216       NA     :19216   
##  0      :   16      -38.2221:    3   0      :   16       0      :   16   
##  0.0568 :    1      101.2451:    3   0.256  :    1       0.0656 :    1   
##  0.0605 :    1      14.7001 :    3   0.2581 :    1       0.0666 :    1   
##  0.0722 :    1      -22.378 :    2   0.2864 :    1       0.082  :    1   
##  0.0783 :    1      21.4432 :    2   0.3249 :    1       0.1056 :    1   
##  (Other):  386      (Other) :  393   (Other):  386       (Other):  386   
##  gyros_dumbbell_x    gyros_dumbbell_y   gyros_dumbbell_z 
##  Min.   :-204.0000   Min.   :-2.10000   Min.   : -2.380  
##  1st Qu.:  -0.0300   1st Qu.:-0.14000   1st Qu.: -0.310  
##  Median :   0.1300   Median : 0.03000   Median : -0.130  
##  Mean   :   0.1611   Mean   : 0.04606   Mean   : -0.129  
##  3rd Qu.:   0.3500   3rd Qu.: 0.21000   3rd Qu.:  0.030  
##  Max.   :   2.2200   Max.   :52.00000   Max.   :317.000  
##                                                          
##  accel_dumbbell_x  accel_dumbbell_y  accel_dumbbell_z  magnet_dumbbell_x
##  Min.   :-419.00   Min.   :-189.00   Min.   :-334.00   Min.   :-643.0   
##  1st Qu.: -50.00   1st Qu.:  -8.00   1st Qu.:-142.00   1st Qu.:-535.0   
##  Median :  -8.00   Median :  41.50   Median :  -1.00   Median :-479.0   
##  Mean   : -28.62   Mean   :  52.63   Mean   : -38.32   Mean   :-328.5   
##  3rd Qu.:  11.00   3rd Qu.: 111.00   3rd Qu.:  38.00   3rd Qu.:-304.0   
##  Max.   : 235.00   Max.   : 315.00   Max.   : 318.00   Max.   : 592.0   
##                                                                         
##  magnet_dumbbell_y magnet_dumbbell_z  roll_forearm       pitch_forearm   
##  Min.   :-3600     Min.   :-262.00   Min.   :-180.0000   Min.   :-72.50  
##  1st Qu.:  231     1st Qu.: -45.00   1st Qu.:  -0.7375   1st Qu.:  0.00  
##  Median :  311     Median :  13.00   Median :  21.7000   Median :  9.24  
##  Mean   :  221     Mean   :  46.05   Mean   :  33.8265   Mean   : 10.71  
##  3rd Qu.:  390     3rd Qu.:  95.00   3rd Qu.: 140.0000   3rd Qu.: 28.40  
##  Max.   :  633     Max.   : 452.00   Max.   : 180.0000   Max.   : 89.80  
##                                                                          
##   yaw_forearm      kurtosis_roll_forearm kurtosis_picth_forearm
##  Min.   :-180.00   Min.   :-1.879        Min.   :-2.098        
##  1st Qu.: -68.60   1st Qu.:-1.398        1st Qu.:-1.376        
##  Median :   0.00   Median :-1.119        Median :-0.890        
##  Mean   :  19.21   Mean   :-0.689        Mean   : 0.419        
##  3rd Qu.: 110.00   3rd Qu.:-0.618        3rd Qu.: 0.054        
##  Max.   : 180.00   Max.   :40.060        Max.   :33.626        
##                    NA's   :19300         NA's   :19301         
##  kurtosis_yaw_forearm skewness_roll_forearm skewness_pitch_forearm
##  Mode:logical         Min.   :-2.297        Min.   :-5.241        
##  NA's:19622           1st Qu.:-0.402        1st Qu.:-0.881        
##                       Median : 0.003        Median :-0.156        
##                       Mean   :-0.009        Mean   :-0.223        
##                       3rd Qu.: 0.370        3rd Qu.: 0.514        
##                       Max.   : 5.856        Max.   : 4.464        
##                       NA's   :19299         NA's   :19301         
##  skewness_yaw_forearm max_roll_forearm max_picth_forearm max_yaw_forearm 
##  Mode:logical         NA     :19216    NA     :19216     Min.   :-1.900  
##  NA's:19622           0      :   83    0      :   83     1st Qu.:-1.400  
##                       -63.7  :    3    179    :   28     Median :-1.100  
##                       23.7   :    3    178    :   20     Mean   :-0.689  
##                       28.8   :    3    176    :   16     3rd Qu.:-0.600  
##                       29.6   :    3    177    :   14     Max.   :40.100  
##                       (Other):  311    (Other):  245     NA's   :19300   
##  min_roll_forearm min_pitch_forearm min_yaw_forearm 
##  NA     :19216    NA     :19216     Min.   :-1.900  
##  0      :   83    0      :   83     1st Qu.:-1.400  
##  -0.4   :    3    -179   :   29     Median :-1.100  
##  -13.8  :    3    -178   :   25     Mean   :-0.689  
##  -2.7   :    3    -180   :   17     3rd Qu.:-0.600  
##  12.8   :    3    -176   :   13     Max.   :40.100  
##  (Other):  311    (Other):  239     NA's   :19300   
##  amplitude_roll_forearm amplitude_pitch_forearm amplitude_yaw_forearm
##  NA     :19216          NA     :19216           Min.   :0            
##  0      :   83          0      :   85           1st Qu.:0            
##  1.7    :    4          354    :   26           Median :0            
##  0.3    :    3          356    :   13           Mean   :0            
##  1      :    3          358    :   13           3rd Qu.:0            
##  2.7    :    3          1      :   12           Max.   :0            
##  (Other):  310          (Other):  257           NA's   :19300        
##  total_accel_forearm var_accel_forearm avg_roll_forearm
##  Min.   :  0.00      NA     :19216     NA      :19216  
##  1st Qu.: 29.00      0      :    7     0       :   83  
##  Median : 36.00      0.02326:    2     148     :    3  
##  Mean   : 34.72      0.03634:    1     -0.04542:    1  
##  3rd Qu.: 41.00      0.06082:    1     -0.71875:    1  
##  Max.   :108.00      0.06753:    1     -0.97204:    1  
##                      (Other):  394     (Other) :  317  
##  stddev_roll_forearm var_roll_forearm avg_pitch_forearm
##  NA     :19216       NA     :19216    NA      :19216   
##  0      :   87       0      :   87    0       :   83   
##  0.13736:    1       0.01887:    1    -0.38473:    1   
##  0.20927:    1       0.04379:    1    -0.56106:    1   
##  0.23772:    1       0.05651:    1    -0.59022:    1   
##  0.24204:    1       0.05858:    1    -0.84531:    1   
##  (Other):  315       (Other):  315    (Other) :  319   
##  stddev_pitch_forearm var_pitch_forearm   avg_yaw_forearm 
##  NA     :19216        NA     :19216     NA        :19216  
##  0      :   83        0      :   83     0         :   83  
##  0.82447:    2        0.00043:    1     -1.07213  :    1  
##  0.02082:    1        0.00371:    1     -1.5242   :    1  
##  0.06088:    1        0.00559:    1     -10.14286 :    1  
##  0.07474:    1        0.00611:    1     -100.77442:    1  
##  (Other):  318        (Other):  319     (Other)   :  319  
##  stddev_yaw_forearm var_yaw_forearm gyros_forearm_x   gyros_forearm_y    
##  NA     :19216      NA     :19216   Min.   :-22.000   Min.   : -7.02000  
##  0      :   85      0      :   85   1st Qu.: -0.220   1st Qu.: -1.46000  
##  0.06047:    1      0.00366:    1   Median :  0.050   Median :  0.03000  
##  0.19024:    1      0.03619:    1   Mean   :  0.158   Mean   :  0.07517  
##  0.20841:    1      0.04343:    1   3rd Qu.:  0.560   3rd Qu.:  1.62000  
##  0.21308:    1      0.0454 :    1   Max.   :  3.970   Max.   :311.00000  
##  (Other):  317      (Other):  317                                        
##  gyros_forearm_z    accel_forearm_x   accel_forearm_y  accel_forearm_z  
##  Min.   : -8.0900   Min.   :-498.00   Min.   :-632.0   Min.   :-446.00  
##  1st Qu.: -0.1800   1st Qu.:-178.00   1st Qu.:  57.0   1st Qu.:-182.00  
##  Median :  0.0800   Median : -57.00   Median : 201.0   Median : -39.00  
##  Mean   :  0.1512   Mean   : -61.65   Mean   : 163.7   Mean   : -55.29  
##  3rd Qu.:  0.4900   3rd Qu.:  76.00   3rd Qu.: 312.0   3rd Qu.:  26.00  
##  Max.   :231.0000   Max.   : 477.00   Max.   : 923.0   Max.   : 291.00  
##                                                                         
##  magnet_forearm_x  magnet_forearm_y magnet_forearm_z classe  
##  Min.   :-1280.0   Min.   :-896.0   Min.   :-973.0   A:5580  
##  1st Qu.: -616.0   1st Qu.:   2.0   1st Qu.: 191.0   B:3797  
##  Median : -378.0   Median : 591.0   Median : 511.0   C:3422  
##  Mean   : -312.6   Mean   : 380.1   Mean   : 393.6   D:3216  
##  3rd Qu.:  -73.0   3rd Qu.: 737.0   3rd Qu.: 653.0   E:3607  
##  Max.   :  672.0   Max.   :1480.0   Max.   :1090.0           
## 
# Dimensions of the test data
dim(TestData)
## [1]  20 160
# Check the structure of the test data
str(TestData)
## 'data.frame':    20 obs. of  160 variables:
##  $ X                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ user_name               : Factor w/ 6 levels "adelmo","carlitos",..: 6 5 5 1 4 5 5 5 2 3 ...
##  $ raw_timestamp_part_1    : int  1323095002 1322673067 1322673075 1322832789 1322489635 1322673149 1322673128 1322673076 1323084240 1322837822 ...
##  $ raw_timestamp_part_2    : int  868349 778725 342967 560311 814776 510661 766645 54671 916313 384285 ...
##  $ cvtd_timestamp          : Factor w/ 11 levels "02/12/2011 13:33",..: 5 10 10 1 6 11 11 10 3 2 ...
##  $ new_window              : Factor w/ 1 level "no": 1 1 1 1 1 1 1 1 1 1 ...
##  $ num_window              : int  74 431 439 194 235 504 485 440 323 664 ...
##  $ roll_belt               : num  123 1.02 0.87 125 1.35 -5.92 1.2 0.43 0.93 114 ...
##  $ pitch_belt              : num  27 4.87 1.82 -41.6 3.33 1.59 4.44 4.15 6.72 22.4 ...
##  $ yaw_belt                : num  -4.75 -88.9 -88.5 162 -88.6 -87.7 -87.3 -88.5 -93.7 -13.1 ...
##  $ total_accel_belt        : int  20 4 5 17 3 4 4 4 4 18 ...
##  $ kurtosis_roll_belt      : logi  NA NA NA NA NA NA ...
##  $ kurtosis_picth_belt     : logi  NA NA NA NA NA NA ...
##  $ kurtosis_yaw_belt       : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_belt      : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_belt.1    : logi  NA NA NA NA NA NA ...
##  $ skewness_yaw_belt       : logi  NA NA NA NA NA NA ...
##  $ max_roll_belt           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_picth_belt          : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_yaw_belt            : logi  NA NA NA NA NA NA ...
##  $ min_roll_belt           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_pitch_belt          : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_yaw_belt            : logi  NA NA NA NA NA NA ...
##  $ amplitude_roll_belt     : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_pitch_belt    : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_yaw_belt      : logi  NA NA NA NA NA NA ...
##  $ var_total_accel_belt    : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_roll_belt           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_roll_belt        : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_roll_belt           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_pitch_belt          : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_pitch_belt       : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_pitch_belt          : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_yaw_belt            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_yaw_belt         : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_yaw_belt            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ gyros_belt_x            : num  -0.5 -0.06 0.05 0.11 0.03 0.1 -0.06 -0.18 0.1 0.14 ...
##  $ gyros_belt_y            : num  -0.02 -0.02 0.02 0.11 0.02 0.05 0 -0.02 0 0.11 ...
##  $ gyros_belt_z            : num  -0.46 -0.07 0.03 -0.16 0 -0.13 0 -0.03 -0.02 -0.16 ...
##  $ accel_belt_x            : int  -38 -13 1 46 -8 -11 -14 -10 -15 -25 ...
##  $ accel_belt_y            : int  69 11 -1 45 4 -16 2 -2 1 63 ...
##  $ accel_belt_z            : int  -179 39 49 -156 27 38 35 42 32 -158 ...
##  $ magnet_belt_x           : int  -13 43 29 169 33 31 50 39 -6 10 ...
##  $ magnet_belt_y           : int  581 636 631 608 566 638 622 635 600 601 ...
##  $ magnet_belt_z           : int  -382 -309 -312 -304 -418 -291 -315 -305 -302 -330 ...
##  $ roll_arm                : num  40.7 0 0 -109 76.1 0 0 0 -137 -82.4 ...
##  $ pitch_arm               : num  -27.8 0 0 55 2.76 0 0 0 11.2 -63.8 ...
##  $ yaw_arm                 : num  178 0 0 -142 102 0 0 0 -167 -75.3 ...
##  $ total_accel_arm         : int  10 38 44 25 29 14 15 22 34 32 ...
##  $ var_accel_arm           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_roll_arm            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_roll_arm         : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_roll_arm            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_pitch_arm           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_pitch_arm        : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_pitch_arm           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ avg_yaw_arm             : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ stddev_yaw_arm          : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_yaw_arm             : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ gyros_arm_x             : num  -1.65 -1.17 2.1 0.22 -1.96 0.02 2.36 -3.71 0.03 0.26 ...
##  $ gyros_arm_y             : num  0.48 0.85 -1.36 -0.51 0.79 0.05 -1.01 1.85 -0.02 -0.5 ...
##  $ gyros_arm_z             : num  -0.18 -0.43 1.13 0.92 -0.54 -0.07 0.89 -0.69 -0.02 0.79 ...
##  $ accel_arm_x             : int  16 -290 -341 -238 -197 -26 99 -98 -287 -301 ...
##  $ accel_arm_y             : int  38 215 245 -57 200 130 79 175 111 -42 ...
##  $ accel_arm_z             : int  93 -90 -87 6 -30 -19 -67 -78 -122 -80 ...
##  $ magnet_arm_x            : int  -326 -325 -264 -173 -170 396 702 535 -367 -420 ...
##  $ magnet_arm_y            : int  385 447 474 257 275 176 15 215 335 294 ...
##  $ magnet_arm_z            : int  481 434 413 633 617 516 217 385 520 493 ...
##  $ kurtosis_roll_arm       : logi  NA NA NA NA NA NA ...
##  $ kurtosis_picth_arm      : logi  NA NA NA NA NA NA ...
##  $ kurtosis_yaw_arm        : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_arm       : logi  NA NA NA NA NA NA ...
##  $ skewness_pitch_arm      : logi  NA NA NA NA NA NA ...
##  $ skewness_yaw_arm        : logi  NA NA NA NA NA NA ...
##  $ max_roll_arm            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_picth_arm           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_yaw_arm             : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_roll_arm            : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_pitch_arm           : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_yaw_arm             : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_roll_arm      : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_pitch_arm     : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_yaw_arm       : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ roll_dumbbell           : num  -17.7 54.5 57.1 43.1 -101.4 ...
##  $ pitch_dumbbell          : num  25 -53.7 -51.4 -30 -53.4 ...
##  $ yaw_dumbbell            : num  126.2 -75.5 -75.2 -103.3 -14.2 ...
##  $ kurtosis_roll_dumbbell  : logi  NA NA NA NA NA NA ...
##  $ kurtosis_picth_dumbbell : logi  NA NA NA NA NA NA ...
##  $ kurtosis_yaw_dumbbell   : logi  NA NA NA NA NA NA ...
##  $ skewness_roll_dumbbell  : logi  NA NA NA NA NA NA ...
##  $ skewness_pitch_dumbbell : logi  NA NA NA NA NA NA ...
##  $ skewness_yaw_dumbbell   : logi  NA NA NA NA NA NA ...
##  $ max_roll_dumbbell       : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_picth_dumbbell      : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_yaw_dumbbell        : logi  NA NA NA NA NA NA ...
##  $ min_roll_dumbbell       : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_pitch_dumbbell      : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_yaw_dumbbell        : logi  NA NA NA NA NA NA ...
##  $ amplitude_roll_dumbbell : Factor w/ 1 level "NA": 1 1 1 1 1 1 1 1 1 1 ...
##   [list output truncated]
# Summary of the test data
summary(TestData)
##        X            user_name raw_timestamp_part_1 raw_timestamp_part_2
##  Min.   : 1.00   adelmo  :1   Min.   :1.322e+09    Min.   : 36553      
##  1st Qu.: 5.75   carlitos:3   1st Qu.:1.323e+09    1st Qu.:268655      
##  Median :10.50   charles :1   Median :1.323e+09    Median :530706      
##  Mean   :10.50   eurico  :4   Mean   :1.323e+09    Mean   :512167      
##  3rd Qu.:15.25   jeremy  :8   3rd Qu.:1.323e+09    3rd Qu.:787738      
##  Max.   :20.00   pedro   :3   Max.   :1.323e+09    Max.   :920315      
##                                                                        
##           cvtd_timestamp new_window   num_window      roll_belt       
##  30/11/2011 17:11:4      no:20      Min.   : 48.0   Min.   : -5.9200  
##  05/12/2011 11:24:3                 1st Qu.:250.0   1st Qu.:  0.9075  
##  30/11/2011 17:12:3                 Median :384.5   Median :  1.1100  
##  05/12/2011 14:23:2                 Mean   :379.6   Mean   : 31.3055  
##  28/11/2011 14:14:2                 3rd Qu.:467.0   3rd Qu.: 32.5050  
##  02/12/2011 13:33:1                 Max.   :859.0   Max.   :129.0000  
##  (Other)         :5                                                   
##    pitch_belt         yaw_belt      total_accel_belt kurtosis_roll_belt
##  Min.   :-41.600   Min.   :-93.70   Min.   : 2.00    Mode:logical      
##  1st Qu.:  3.013   1st Qu.:-88.62   1st Qu.: 3.00    NA's:20           
##  Median :  4.655   Median :-87.85   Median : 4.00                      
##  Mean   :  5.824   Mean   :-59.30   Mean   : 7.55                      
##  3rd Qu.:  6.135   3rd Qu.:-63.50   3rd Qu.: 8.00                      
##  Max.   : 27.800   Max.   :162.00   Max.   :21.00                      
##                                                                        
##  kurtosis_picth_belt kurtosis_yaw_belt skewness_roll_belt
##  Mode:logical        Mode:logical      Mode:logical      
##  NA's:20             NA's:20           NA's:20           
##                                                          
##                                                          
##                                                          
##                                                          
##                                                          
##  skewness_roll_belt.1 skewness_yaw_belt max_roll_belt max_picth_belt
##  Mode:logical         Mode:logical      NA:20         NA:20         
##  NA's:20              NA's:20                                       
##                                                                     
##                                                                     
##                                                                     
##                                                                     
##                                                                     
##  max_yaw_belt   min_roll_belt min_pitch_belt min_yaw_belt  
##  Mode:logical   NA:20         NA:20          Mode:logical  
##  NA's:20                                     NA's:20       
##                                                            
##                                                            
##                                                            
##                                                            
##                                                            
##  amplitude_roll_belt amplitude_pitch_belt amplitude_yaw_belt
##  NA:20               NA:20                Mode:logical      
##                                           NA's:20           
##                                                             
##                                                             
##                                                             
##                                                             
##                                                             
##  var_total_accel_belt avg_roll_belt stddev_roll_belt var_roll_belt
##  NA:20                NA:20         NA:20            NA:20        
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##  avg_pitch_belt stddev_pitch_belt var_pitch_belt avg_yaw_belt
##  NA:20          NA:20             NA:20          NA:20       
##                                                              
##                                                              
##                                                              
##                                                              
##                                                              
##                                                              
##  stddev_yaw_belt var_yaw_belt  gyros_belt_x     gyros_belt_y   
##  NA:20           NA:20        Min.   :-0.500   Min.   :-0.050  
##                               1st Qu.:-0.070   1st Qu.:-0.005  
##                               Median : 0.020   Median : 0.000  
##                               Mean   :-0.045   Mean   : 0.010  
##                               3rd Qu.: 0.070   3rd Qu.: 0.020  
##                               Max.   : 0.240   Max.   : 0.110  
##                                                                
##   gyros_belt_z      accel_belt_x     accel_belt_y     accel_belt_z    
##  Min.   :-0.4800   Min.   :-48.00   Min.   :-16.00   Min.   :-187.00  
##  1st Qu.:-0.1375   1st Qu.:-19.00   1st Qu.:  2.00   1st Qu.: -24.00  
##  Median :-0.0250   Median :-13.00   Median :  4.50   Median :  27.00  
##  Mean   :-0.1005   Mean   :-13.50   Mean   : 18.35   Mean   : -17.60  
##  3rd Qu.: 0.0000   3rd Qu.: -8.75   3rd Qu.: 25.50   3rd Qu.:  38.25  
##  Max.   : 0.0500   Max.   : 46.00   Max.   : 72.00   Max.   :  49.00  
##                                                                       
##  magnet_belt_x    magnet_belt_y   magnet_belt_z       roll_arm      
##  Min.   :-13.00   Min.   :566.0   Min.   :-426.0   Min.   :-137.00  
##  1st Qu.:  5.50   1st Qu.:578.5   1st Qu.:-398.5   1st Qu.:   0.00  
##  Median : 33.50   Median :600.5   Median :-313.5   Median :   0.00  
##  Mean   : 35.15   Mean   :601.5   Mean   :-346.9   Mean   :  16.42  
##  3rd Qu.: 46.25   3rd Qu.:631.2   3rd Qu.:-305.0   3rd Qu.:  71.53  
##  Max.   :169.00   Max.   :638.0   Max.   :-291.0   Max.   : 152.00  
##                                                                     
##    pitch_arm          yaw_arm        total_accel_arm var_accel_arm
##  Min.   :-63.800   Min.   :-167.00   Min.   : 3.00   NA:20        
##  1st Qu.: -9.188   1st Qu.: -60.15   1st Qu.:20.25                
##  Median :  0.000   Median :   0.00   Median :29.50                
##  Mean   : -3.950   Mean   :  -2.80   Mean   :26.40                
##  3rd Qu.:  3.465   3rd Qu.:  25.50   3rd Qu.:33.25                
##  Max.   : 55.000   Max.   : 178.00   Max.   :44.00                
##                                                                   
##  avg_roll_arm stddev_roll_arm var_roll_arm avg_pitch_arm stddev_pitch_arm
##  NA:20        NA:20           NA:20        NA:20         NA:20           
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##  var_pitch_arm avg_yaw_arm stddev_yaw_arm var_yaw_arm  gyros_arm_x    
##  NA:20         NA:20       NA:20          NA:20       Min.   :-3.710  
##                                                       1st Qu.:-0.645  
##                                                       Median : 0.020  
##                                                       Mean   : 0.077  
##                                                       3rd Qu.: 1.248  
##                                                       Max.   : 3.660  
##                                                                       
##   gyros_arm_y       gyros_arm_z       accel_arm_x      accel_arm_y    
##  Min.   :-2.0900   Min.   :-0.6900   Min.   :-341.0   Min.   :-65.00  
##  1st Qu.:-0.6350   1st Qu.:-0.1800   1st Qu.:-277.0   1st Qu.: 52.25  
##  Median :-0.0400   Median :-0.0250   Median :-194.5   Median :112.00  
##  Mean   :-0.1595   Mean   : 0.1205   Mean   :-134.6   Mean   :103.10  
##  3rd Qu.: 0.2175   3rd Qu.: 0.5650   3rd Qu.:   5.5   3rd Qu.:168.25  
##  Max.   : 1.8500   Max.   : 1.1300   Max.   : 106.0   Max.   :245.00  
##                                                                       
##   accel_arm_z       magnet_arm_x      magnet_arm_y     magnet_arm_z   
##  Min.   :-404.00   Min.   :-428.00   Min.   :-307.0   Min.   :-499.0  
##  1st Qu.:-128.50   1st Qu.:-373.75   1st Qu.: 205.2   1st Qu.: 403.0  
##  Median : -83.50   Median :-265.00   Median : 291.0   Median : 476.5  
##  Mean   : -87.85   Mean   : -38.95   Mean   : 239.4   Mean   : 369.8  
##  3rd Qu.: -27.25   3rd Qu.: 250.50   3rd Qu.: 358.8   3rd Qu.: 517.0  
##  Max.   :  93.00   Max.   : 750.00   Max.   : 474.0   Max.   : 633.0  
##                                                                       
##  kurtosis_roll_arm kurtosis_picth_arm kurtosis_yaw_arm skewness_roll_arm
##  Mode:logical      Mode:logical       Mode:logical     Mode:logical     
##  NA's:20           NA's:20            NA's:20          NA's:20          
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##  skewness_pitch_arm skewness_yaw_arm max_roll_arm max_picth_arm
##  Mode:logical       Mode:logical     NA:20        NA:20        
##  NA's:20            NA's:20                                    
##                                                                
##                                                                
##                                                                
##                                                                
##                                                                
##  max_yaw_arm min_roll_arm min_pitch_arm min_yaw_arm amplitude_roll_arm
##  NA:20       NA:20        NA:20         NA:20       NA:20             
##                                                                       
##                                                                       
##                                                                       
##                                                                       
##                                                                       
##                                                                       
##  amplitude_pitch_arm amplitude_yaw_arm roll_dumbbell      pitch_dumbbell  
##  NA:20               NA:20             Min.   :-111.118   Min.   :-54.97  
##                                        1st Qu.:   7.494   1st Qu.:-51.89  
##                                        Median :  50.403   Median :-40.81  
##                                        Mean   :  33.760   Mean   :-19.47  
##                                        3rd Qu.:  58.129   3rd Qu.: 16.12  
##                                        Max.   : 123.984   Max.   : 96.87  
##                                                                           
##   yaw_dumbbell       kurtosis_roll_dumbbell kurtosis_picth_dumbbell
##  Min.   :-103.3200   Mode:logical           Mode:logical           
##  1st Qu.: -75.2809   NA's:20                NA's:20                
##  Median :  -8.2863                                                 
##  Mean   :  -0.9385                                                 
##  3rd Qu.:  55.8335                                                 
##  Max.   : 132.2337                                                 
##                                                                    
##  kurtosis_yaw_dumbbell skewness_roll_dumbbell skewness_pitch_dumbbell
##  Mode:logical          Mode:logical           Mode:logical           
##  NA's:20               NA's:20                NA's:20                
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##  skewness_yaw_dumbbell max_roll_dumbbell max_picth_dumbbell
##  Mode:logical          NA:20             NA:20             
##  NA's:20                                                   
##                                                            
##                                                            
##                                                            
##                                                            
##                                                            
##  max_yaw_dumbbell min_roll_dumbbell min_pitch_dumbbell min_yaw_dumbbell
##  Mode:logical     NA:20             NA:20              Mode:logical    
##  NA's:20                                               NA's:20         
##                                                                        
##                                                                        
##                                                                        
##                                                                        
##                                                                        
##  amplitude_roll_dumbbell amplitude_pitch_dumbbell amplitude_yaw_dumbbell
##  NA:20                   NA:20                    Mode:logical          
##                                                   NA's:20               
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##  total_accel_dumbbell var_accel_dumbbell avg_roll_dumbbell
##  Min.   : 1.0         NA:20              NA:20            
##  1st Qu.: 7.0                                             
##  Median :15.5                                             
##  Mean   :17.2                                             
##  3rd Qu.:29.0                                             
##  Max.   :31.0                                             
##                                                           
##  stddev_roll_dumbbell var_roll_dumbbell avg_pitch_dumbbell
##  NA:20                NA:20             NA:20             
##                                                           
##                                                           
##                                                           
##                                                           
##                                                           
##                                                           
##  stddev_pitch_dumbbell var_pitch_dumbbell avg_yaw_dumbbell
##  NA:20                 NA:20              NA:20           
##                                                           
##                                                           
##                                                           
##                                                           
##                                                           
##                                                           
##  stddev_yaw_dumbbell var_yaw_dumbbell gyros_dumbbell_x  gyros_dumbbell_y 
##  NA:20               NA:20            Min.   :-1.0300   Min.   :-1.1100  
##                                       1st Qu.: 0.1600   1st Qu.:-0.2100  
##                                       Median : 0.3600   Median : 0.0150  
##                                       Mean   : 0.2690   Mean   : 0.0605  
##                                       3rd Qu.: 0.4625   3rd Qu.: 0.1450  
##                                       Max.   : 1.0600   Max.   : 1.9100  
##                                                                          
##  gyros_dumbbell_z accel_dumbbell_x  accel_dumbbell_y accel_dumbbell_z
##  Min.   :-1.180   Min.   :-159.00   Min.   :-30.00   Min.   :-221.0  
##  1st Qu.:-0.485   1st Qu.:-140.25   1st Qu.:  5.75   1st Qu.:-192.2  
##  Median :-0.280   Median : -19.00   Median : 71.50   Median :  -3.0  
##  Mean   :-0.266   Mean   : -47.60   Mean   : 70.55   Mean   : -60.0  
##  3rd Qu.:-0.165   3rd Qu.:  15.75   3rd Qu.:151.25   3rd Qu.:  76.5  
##  Max.   : 1.100   Max.   : 185.00   Max.   :166.00   Max.   : 100.0  
##                                                                      
##  magnet_dumbbell_x magnet_dumbbell_y magnet_dumbbell_z  roll_forearm    
##  Min.   :-576.0    Min.   :-558.0    Min.   :-164.00   Min.   :-176.00  
##  1st Qu.:-528.0    1st Qu.: 259.5    1st Qu.: -33.00   1st Qu.: -40.25  
##  Median :-508.5    Median : 316.0    Median :  49.50   Median :  94.20  
##  Mean   :-304.2    Mean   : 189.3    Mean   :  71.40   Mean   :  38.66  
##  3rd Qu.:-317.0    3rd Qu.: 348.2    3rd Qu.:  96.25   3rd Qu.: 143.25  
##  Max.   : 523.0    Max.   : 403.0    Max.   : 368.00   Max.   : 176.00  
##                                                                         
##  pitch_forearm      yaw_forearm       kurtosis_roll_forearm
##  Min.   :-63.500   Min.   :-168.000   Mode:logical         
##  1st Qu.:-11.457   1st Qu.: -93.375   NA's:20              
##  Median :  8.830   Median : -19.250                        
##  Mean   :  7.099   Mean   :   2.195                        
##  3rd Qu.: 28.500   3rd Qu.: 104.500                        
##  Max.   : 59.300   Max.   : 159.000                        
##                                                            
##  kurtosis_picth_forearm kurtosis_yaw_forearm skewness_roll_forearm
##  Mode:logical           Mode:logical         Mode:logical         
##  NA's:20                NA's:20              NA's:20              
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##                                                                   
##  skewness_pitch_forearm skewness_yaw_forearm max_roll_forearm
##  Mode:logical           Mode:logical         NA:20           
##  NA's:20                NA's:20                              
##                                                              
##                                                              
##                                                              
##                                                              
##                                                              
##  max_picth_forearm max_yaw_forearm min_roll_forearm min_pitch_forearm
##  NA:20             Mode:logical    NA:20            NA:20            
##                    NA's:20                                           
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##  min_yaw_forearm amplitude_roll_forearm amplitude_pitch_forearm
##  Mode:logical    NA:20                  NA:20                  
##  NA's:20                                                       
##                                                                
##                                                                
##                                                                
##                                                                
##                                                                
##  amplitude_yaw_forearm total_accel_forearm var_accel_forearm
##  Mode:logical          Min.   :21.00       NA:20            
##  NA's:20               1st Qu.:24.00                        
##                        Median :32.50                        
##                        Mean   :32.05                        
##                        3rd Qu.:36.75                        
##                        Max.   :47.00                        
##                                                             
##  avg_roll_forearm stddev_roll_forearm var_roll_forearm avg_pitch_forearm
##  NA:20            NA:20               NA:20            NA:20            
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##  stddev_pitch_forearm var_pitch_forearm avg_yaw_forearm stddev_yaw_forearm
##  NA:20                NA:20             NA:20           NA:20             
##                                                                           
##                                                                           
##                                                                           
##                                                                           
##                                                                           
##                                                                           
##  var_yaw_forearm gyros_forearm_x   gyros_forearm_y   gyros_forearm_z  
##  NA:20           Min.   :-1.0600   Min.   :-5.9700   Min.   :-1.2600  
##                  1st Qu.:-0.5850   1st Qu.:-1.2875   1st Qu.:-0.0975  
##                  Median : 0.0200   Median : 0.0350   Median : 0.2300  
##                  Mean   :-0.0200   Mean   :-0.0415   Mean   : 0.2610  
##                  3rd Qu.: 0.2925   3rd Qu.: 2.0475   3rd Qu.: 0.7625  
##                  Max.   : 1.3800   Max.   : 4.2600   Max.   : 1.8000  
##                                                                       
##  accel_forearm_x  accel_forearm_y  accel_forearm_z  magnet_forearm_x
##  Min.   :-212.0   Min.   :-331.0   Min.   :-282.0   Min.   :-714.0  
##  1st Qu.:-114.8   1st Qu.:   8.5   1st Qu.:-199.0   1st Qu.:-427.2  
##  Median :  86.0   Median : 138.0   Median :-148.5   Median :-189.5  
##  Mean   :  38.8   Mean   : 125.3   Mean   : -93.7   Mean   :-159.2  
##  3rd Qu.: 166.2   3rd Qu.: 268.0   3rd Qu.: -31.0   3rd Qu.:  41.5  
##  Max.   : 232.0   Max.   : 406.0   Max.   : 179.0   Max.   : 532.0  
##                                                                     
##  magnet_forearm_y magnet_forearm_z   problem_id   
##  Min.   :-787.0   Min.   :-32.0    Min.   : 1.00  
##  1st Qu.:-328.8   1st Qu.:275.2    1st Qu.: 5.75  
##  Median : 487.0   Median :491.5    Median :10.50  
##  Mean   : 191.8   Mean   :460.2    Mean   :10.50  
##  3rd Qu.: 720.8   3rd Qu.:661.5    3rd Qu.:15.25  
##  Max.   : 800.0   Max.   :884.0    Max.   :20.00  
## 
# Lets make the character values to numeric in Training Dataset
for(i in c(8:ncol(TrainingData)-1)) {
TrainingData[, i] = as.numeric(as.character(TrainingData[, i]))
}

# And also in Test Dataset
for(i in c(8:ncol(TestData)-1)) {
TestData[, i] = as.numeric(as.character(TestData[, i]))
}

# We noticed that there are Some columns which were mostly blank (& contain only NAs). 
# Considering that These columns do not contribute to the prediction, at least in my exercise, 
# I, therefore, choose only to include columns with complete cases and remove the non-contributing columns. 
# Also I choose to remove columns such as "user name"", "timestamps", "windows" ect. from the dataset. 
newtrainingdata <- colnames(TrainingData[colSums(is.na(TrainingData)) == 0])[-(1:7)]
NewTrainingData <- TrainingData[newtrainingdata]

7. Looking into Cleaned and Redefined Dataset

head(NewTrainingData)
##   roll_belt pitch_belt yaw_belt total_accel_belt gyros_belt_x gyros_belt_y
## 1      1.41       8.07    -94.4                3         0.00         0.00
## 2      1.41       8.07    -94.4                3         0.02         0.00
## 3      1.42       8.07    -94.4                3         0.00         0.00
## 4      1.48       8.05    -94.4                3         0.02         0.00
## 5      1.48       8.07    -94.4                3         0.02         0.02
## 6      1.45       8.06    -94.4                3         0.02         0.00
##   gyros_belt_z accel_belt_x accel_belt_y accel_belt_z magnet_belt_x
## 1        -0.02          -21            4           22            -3
## 2        -0.02          -22            4           22            -7
## 3        -0.02          -20            5           23            -2
## 4        -0.03          -22            3           21            -6
## 5        -0.02          -21            2           24            -6
## 6        -0.02          -21            4           21             0
##   magnet_belt_y magnet_belt_z roll_arm pitch_arm yaw_arm total_accel_arm
## 1           599          -313     -128      22.5    -161              34
## 2           608          -311     -128      22.5    -161              34
## 3           600          -305     -128      22.5    -161              34
## 4           604          -310     -128      22.1    -161              34
## 5           600          -302     -128      22.1    -161              34
## 6           603          -312     -128      22.0    -161              34
##   gyros_arm_x gyros_arm_y gyros_arm_z accel_arm_x accel_arm_y accel_arm_z
## 1        0.00        0.00       -0.02        -288         109        -123
## 2        0.02       -0.02       -0.02        -290         110        -125
## 3        0.02       -0.02       -0.02        -289         110        -126
## 4        0.02       -0.03        0.02        -289         111        -123
## 5        0.00       -0.03        0.00        -289         111        -123
## 6        0.02       -0.03        0.00        -289         111        -122
##   magnet_arm_x magnet_arm_y magnet_arm_z roll_dumbbell pitch_dumbbell
## 1         -368          337          516      13.05217      -70.49400
## 2         -369          337          513      13.13074      -70.63751
## 3         -368          344          513      12.85075      -70.27812
## 4         -372          344          512      13.43120      -70.39379
## 5         -374          337          506      13.37872      -70.42856
## 6         -369          342          513      13.38246      -70.81759
##   yaw_dumbbell total_accel_dumbbell gyros_dumbbell_x gyros_dumbbell_y
## 1    -84.87394                   37                0            -0.02
## 2    -84.71065                   37                0            -0.02
## 3    -85.14078                   37                0            -0.02
## 4    -84.87363                   37                0            -0.02
## 5    -84.85306                   37                0            -0.02
## 6    -84.46500                   37                0            -0.02
##   gyros_dumbbell_z accel_dumbbell_x accel_dumbbell_y accel_dumbbell_z
## 1             0.00             -234               47             -271
## 2             0.00             -233               47             -269
## 3             0.00             -232               46             -270
## 4            -0.02             -232               48             -269
## 5             0.00             -233               48             -270
## 6             0.00             -234               48             -269
##   magnet_dumbbell_x magnet_dumbbell_y magnet_dumbbell_z roll_forearm
## 1              -559               293               -65         28.4
## 2              -555               296               -64         28.3
## 3              -561               298               -63         28.3
## 4              -552               303               -60         28.1
## 5              -554               292               -68         28.0
## 6              -558               294               -66         27.9
##   pitch_forearm yaw_forearm total_accel_forearm gyros_forearm_x
## 1         -63.9        -153                  36            0.03
## 2         -63.9        -153                  36            0.02
## 3         -63.9        -152                  36            0.03
## 4         -63.9        -152                  36            0.02
## 5         -63.9        -152                  36            0.02
## 6         -63.9        -152                  36            0.02
##   gyros_forearm_y gyros_forearm_z accel_forearm_x accel_forearm_y
## 1            0.00           -0.02             192             203
## 2            0.00           -0.02             192             203
## 3           -0.02            0.00             196             204
## 4           -0.02            0.00             189             206
## 5            0.00           -0.02             189             206
## 6           -0.02           -0.03             193             203
##   accel_forearm_z magnet_forearm_x magnet_forearm_y magnet_forearm_z
## 1            -215              -17              654              476
## 2            -216              -18              661              473
## 3            -213              -18              658              469
## 4            -214              -16              658              469
## 5            -214              -17              655              473
## 6            -215               -9              660              478
##   classe
## 1      A
## 2      A
## 3      A
## 4      A
## 5      A
## 6      A

8. Dividing Dataset into Training and Testing Datasets

# Divide the dataset into 75% Training Set and 25% Test Set
parttrain <- createDataPartition(y = NewTrainingData$classe, p = 0.75, list = FALSE)

training <- NewTrainingData[parttrain, ]

testing <- NewTrainingData[-parttrain, ]

9. Using Random Forest and Applying ML

# Method 1
# Next in the steps below, I will build 5 random forests with 150 trees each.
# I will use the powers of "Parallel Processing" in random forests in R to build the model. 
# This speeds up the overall computing in the system.

# Register "Parallel Processing"
registerDoParallel()

p <- training[-ncol(training)]
q <- training$classe

randfor <- foreach(ntree = rep(150, 6), .combine = randomForest::combine, .packages = "randomForest") %dopar% { randomForest(p, q, ntree = ntree) }


# Report of Errors in the Training Data
predictions1 <- predict(randfor, newdata = training)
confusionMatrix(predictions1, training$classe)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction    A    B    C    D    E
##          A 4185    0    0    0    0
##          B    0 2848    0    0    0
##          C    0    0 2567    0    0
##          D    0    0    0 2412    0
##          E    0    0    0    0 2706
## 
## Overall Statistics
##                                      
##                Accuracy : 1          
##                  95% CI : (0.9997, 1)
##     No Information Rate : 0.2843     
##     P-Value [Acc > NIR] : < 2.2e-16  
##                                      
##                   Kappa : 1          
##  Mcnemar's Test P-Value : NA         
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E
## Sensitivity            1.0000   1.0000   1.0000   1.0000   1.0000
## Specificity            1.0000   1.0000   1.0000   1.0000   1.0000
## Pos Pred Value         1.0000   1.0000   1.0000   1.0000   1.0000
## Neg Pred Value         1.0000   1.0000   1.0000   1.0000   1.0000
## Prevalence             0.2843   0.1935   0.1744   0.1639   0.1839
## Detection Rate         0.2843   0.1935   0.1744   0.1639   0.1839
## Detection Prevalence   0.2843   0.1935   0.1744   0.1639   0.1839
## Balanced Accuracy      1.0000   1.0000   1.0000   1.0000   1.0000
# Report of Errors in the Test Data
predictions2 <- predict(randfor, newdata = testing)
confusionMatrix(predictions2, testing$classe)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction    A    B    C    D    E
##          A 1395    4    0    0    0
##          B    0  942    6    0    0
##          C    0    3  848    9    2
##          D    0    0    1  795    3
##          E    0    0    0    0  896
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9943          
##                  95% CI : (0.9918, 0.9962)
##     No Information Rate : 0.2845          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9928          
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E
## Sensitivity            1.0000   0.9926   0.9918   0.9888   0.9945
## Specificity            0.9989   0.9985   0.9965   0.9990   1.0000
## Pos Pred Value         0.9971   0.9937   0.9838   0.9950   1.0000
## Neg Pred Value         1.0000   0.9982   0.9983   0.9978   0.9988
## Prevalence             0.2845   0.1935   0.1743   0.1639   0.1837
## Detection Rate         0.2845   0.1921   0.1729   0.1621   0.1827
## Detection Prevalence   0.2853   0.1933   0.1758   0.1629   0.1827
## Balanced Accuracy      0.9994   0.9956   0.9942   0.9939   0.9972

10. Conclusion

# From the above confusion matrix for train and test datasets, we can conlude that the
# model accuracy is quite high.
# Upon submission of the results in the assignment, will tell us whether accurate results
# were obtained or not.

# As of now, we can say....
# Combined with the high accuracy results from the cross-validation procedure, 
# it appears as though we have good prediction model.

11. Generating Results

# Using the following code from the Coursera assignment details,
# We can upload the 20 generated 20 files in the default folder 
# (i.e. default working directory)

pml_write_files = function(x) {
  n = length(x)
  for(i in 1:n) {
    filename = paste0("problem_id_", i, ".txt")
    write.table(x[i], file = filename, quote = FALSE, row.names = FALSE, col.names = FALSE)
  }
}

# Reassigning Test Data file and running prediction
x <- TestData
x <- x[newtrainingdata[newtrainingdata != 'classe' ]]
# Prediction
answers <- predict(randfor, newdata = x)

# Checking the result of ML on to console
answers
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
##  B  A  B  A  A  E  D  B  A  A  B  C  B  A  E  E  A  B  B  B 
## Levels: A B C D E
# Writing 20 files containing the results of ML (will be stored in default directory)
pml_write_files(answers)