Using devices such as Jawbone Up, Nike FuelBand, and Fitbit it is now possible to collect a large amount of data about personal activity relatively inexpensively. These type of devices are part of the quantified self movement – a group of enthusiasts who take measurements about themselves regularly to improve their health, to find patterns in their behavior, or because they are tech geeks. One thing that people regularly do is quantify how much of a particular activity they do, but they rarely quantify how well they do it. In this project, your goal will be to use data from accelerometers on the belt, forearm, arm, and dumbell of 6 participants. They were asked to perform barbell lifts correctly and incorrectly in 5 different ways. More information is available from the website here: http://groupware.les.inf.puc-rio.br/har (see the section on the Weight Lifting Exercise Dataset).
The training data for this project are available here:
https://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv
The test data are available here:
https://d396qusza40orc.cloudfront.net/predmachlearn/pml-testing.csv
The data for this project come from this source: http://groupware.les.inf.puc-rio.br/har.
Removing variables with zero variance data.
nearzero <- nearZeroVar(pml.train, saveMetrics = TRUE)
pml.train <- pml.train[, !nearzero$nzv]
First seven variables are related to Id, User Name, row and timestamp data, which are not required for prediction.
pml.train<-pml.train[,-(1:7)]
pml.test<-pml.test[,-(1:7)]
Splitting training data into training and testing. Also creating a validation set from the new training set.
Testing set will be used once to verify the model.
pml.train<-pml.train[,colSums(is.na(pml.train)) == 0]
# Partition train into train and test
iftrain <- createDataPartition(pml.train$classe, p=0.7, list = FALSE)
training <- pml.train[c(iftrain), ]
testing <- pml.train[-iftrain, ]
n<-ncol(training)-1
preObj <- preProcess(training[,1:n], method = c("knnImpute"))
training[,1:n] <- predict(preObj, training[,1:n])
testing[,1:n] <- predict(preObj, testing[,1:n])
7 fold cross validation in order to avoid overfitting.
tc <- trainControl(method = "cv", number = 7, verboseIter=FALSE , preProcOptions="pca", allowParallel=TRUE)
## Loading required package: gbm
## Loading required package: survival
##
## Attaching package: 'survival'
## The following object is masked from 'package:caret':
##
## cluster
## Loading required package: splines
## Loading required package: parallel
## Loaded gbm 2.1.3
## Loading required package: plyr
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1162
## 2 1.5362 nan 0.1000 0.0805
## 3 1.4862 nan 0.1000 0.0637
## 4 1.4474 nan 0.1000 0.0485
## 5 1.4170 nan 0.1000 0.0434
## 6 1.3888 nan 0.1000 0.0423
## 7 1.3621 nan 0.1000 0.0388
## 8 1.3382 nan 0.1000 0.0345
## 9 1.3160 nan 0.1000 0.0323
## 10 1.2951 nan 0.1000 0.0286
## 20 1.1476 nan 0.1000 0.0181
## 40 0.9753 nan 0.1000 0.0089
## 60 0.8665 nan 0.1000 0.0074
## 80 0.7825 nan 0.1000 0.0050
## 100 0.7180 nan 0.1000 0.0035
## 120 0.6654 nan 0.1000 0.0038
## 140 0.6176 nan 0.1000 0.0020
## 150 0.5980 nan 0.1000 0.0022
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1679
## 2 1.5032 nan 0.1000 0.1199
## 3 1.4279 nan 0.1000 0.1017
## 4 1.3648 nan 0.1000 0.0751
## 5 1.3169 nan 0.1000 0.0675
## 6 1.2742 nan 0.1000 0.0606
## 7 1.2362 nan 0.1000 0.0513
## 8 1.2038 nan 0.1000 0.0549
## 9 1.1704 nan 0.1000 0.0411
## 10 1.1440 nan 0.1000 0.0382
## 20 0.9463 nan 0.1000 0.0202
## 40 0.7153 nan 0.1000 0.0092
## 60 0.5822 nan 0.1000 0.0065
## 80 0.4896 nan 0.1000 0.0068
## 100 0.4210 nan 0.1000 0.0050
## 120 0.3660 nan 0.1000 0.0029
## 140 0.3235 nan 0.1000 0.0025
## 150 0.3034 nan 0.1000 0.0033
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2197
## 2 1.4712 nan 0.1000 0.1522
## 3 1.3767 nan 0.1000 0.1183
## 4 1.3037 nan 0.1000 0.1032
## 5 1.2400 nan 0.1000 0.0827
## 6 1.1890 nan 0.1000 0.0780
## 7 1.1409 nan 0.1000 0.0662
## 8 1.0998 nan 0.1000 0.0570
## 9 1.0646 nan 0.1000 0.0510
## 10 1.0327 nan 0.1000 0.0449
## 20 0.8010 nan 0.1000 0.0274
## 40 0.5585 nan 0.1000 0.0109
## 60 0.4299 nan 0.1000 0.0073
## 80 0.3423 nan 0.1000 0.0041
## 100 0.2826 nan 0.1000 0.0040
## 120 0.2354 nan 0.1000 0.0038
## 140 0.2006 nan 0.1000 0.0014
## 150 0.1873 nan 0.1000 0.0017
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1137
## 2 1.5367 nan 0.1000 0.0794
## 3 1.4884 nan 0.1000 0.0628
## 4 1.4504 nan 0.1000 0.0461
## 5 1.4214 nan 0.1000 0.0452
## 6 1.3924 nan 0.1000 0.0409
## 7 1.3656 nan 0.1000 0.0374
## 8 1.3425 nan 0.1000 0.0331
## 9 1.3208 nan 0.1000 0.0321
## 10 1.3002 nan 0.1000 0.0292
## 20 1.1564 nan 0.1000 0.0175
## 40 0.9855 nan 0.1000 0.0116
## 60 0.8734 nan 0.1000 0.0061
## 80 0.7891 nan 0.1000 0.0072
## 100 0.7205 nan 0.1000 0.0030
## 120 0.6668 nan 0.1000 0.0030
## 140 0.6178 nan 0.1000 0.0026
## 150 0.5972 nan 0.1000 0.0030
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1697
## 2 1.5025 nan 0.1000 0.1230
## 3 1.4269 nan 0.1000 0.0961
## 4 1.3663 nan 0.1000 0.0767
## 5 1.3188 nan 0.1000 0.0678
## 6 1.2775 nan 0.1000 0.0669
## 7 1.2358 nan 0.1000 0.0543
## 8 1.2018 nan 0.1000 0.0501
## 9 1.1703 nan 0.1000 0.0510
## 10 1.1392 nan 0.1000 0.0384
## 20 0.9452 nan 0.1000 0.0181
## 40 0.7281 nan 0.1000 0.0098
## 60 0.5855 nan 0.1000 0.0082
## 80 0.4891 nan 0.1000 0.0068
## 100 0.4222 nan 0.1000 0.0037
## 120 0.3644 nan 0.1000 0.0035
## 140 0.3214 nan 0.1000 0.0014
## 150 0.3053 nan 0.1000 0.0026
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2212
## 2 1.4729 nan 0.1000 0.1511
## 3 1.3779 nan 0.1000 0.1145
## 4 1.3061 nan 0.1000 0.0944
## 5 1.2479 nan 0.1000 0.0889
## 6 1.1920 nan 0.1000 0.0670
## 7 1.1497 nan 0.1000 0.0627
## 8 1.1105 nan 0.1000 0.0622
## 9 1.0714 nan 0.1000 0.0552
## 10 1.0360 nan 0.1000 0.0431
## 20 0.8058 nan 0.1000 0.0290
## 40 0.5616 nan 0.1000 0.0144
## 60 0.4243 nan 0.1000 0.0057
## 80 0.3441 nan 0.1000 0.0038
## 100 0.2824 nan 0.1000 0.0017
## 120 0.2391 nan 0.1000 0.0030
## 140 0.2009 nan 0.1000 0.0022
## 150 0.1877 nan 0.1000 0.0007
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1112
## 2 1.5367 nan 0.1000 0.0766
## 3 1.4885 nan 0.1000 0.0607
## 4 1.4503 nan 0.1000 0.0485
## 5 1.4194 nan 0.1000 0.0435
## 6 1.3910 nan 0.1000 0.0419
## 7 1.3656 nan 0.1000 0.0355
## 8 1.3427 nan 0.1000 0.0322
## 9 1.3208 nan 0.1000 0.0326
## 10 1.3001 nan 0.1000 0.0297
## 20 1.1554 nan 0.1000 0.0178
## 40 0.9830 nan 0.1000 0.0091
## 60 0.8715 nan 0.1000 0.0065
## 80 0.7882 nan 0.1000 0.0036
## 100 0.7231 nan 0.1000 0.0042
## 120 0.6673 nan 0.1000 0.0032
## 140 0.6232 nan 0.1000 0.0024
## 150 0.6017 nan 0.1000 0.0025
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1757
## 2 1.5012 nan 0.1000 0.1181
## 3 1.4287 nan 0.1000 0.0999
## 4 1.3664 nan 0.1000 0.0773
## 5 1.3186 nan 0.1000 0.0676
## 6 1.2757 nan 0.1000 0.0619
## 7 1.2362 nan 0.1000 0.0511
## 8 1.2037 nan 0.1000 0.0565
## 9 1.1696 nan 0.1000 0.0443
## 10 1.1420 nan 0.1000 0.0468
## 20 0.9431 nan 0.1000 0.0204
## 40 0.7135 nan 0.1000 0.0095
## 60 0.5731 nan 0.1000 0.0082
## 80 0.4817 nan 0.1000 0.0052
## 100 0.4134 nan 0.1000 0.0036
## 120 0.3601 nan 0.1000 0.0036
## 140 0.3191 nan 0.1000 0.0030
## 150 0.3005 nan 0.1000 0.0020
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2222
## 2 1.4743 nan 0.1000 0.1479
## 3 1.3803 nan 0.1000 0.1178
## 4 1.3077 nan 0.1000 0.1006
## 5 1.2452 nan 0.1000 0.0876
## 6 1.1928 nan 0.1000 0.0664
## 7 1.1507 nan 0.1000 0.0698
## 8 1.1060 nan 0.1000 0.0579
## 9 1.0696 nan 0.1000 0.0572
## 10 1.0345 nan 0.1000 0.0451
## 20 0.7996 nan 0.1000 0.0302
## 40 0.5590 nan 0.1000 0.0118
## 60 0.4263 nan 0.1000 0.0065
## 80 0.3379 nan 0.1000 0.0028
## 100 0.2784 nan 0.1000 0.0024
## 120 0.2352 nan 0.1000 0.0017
## 140 0.2018 nan 0.1000 0.0019
## 150 0.1871 nan 0.1000 0.0015
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1159
## 2 1.5364 nan 0.1000 0.0790
## 3 1.4861 nan 0.1000 0.0602
## 4 1.4490 nan 0.1000 0.0476
## 5 1.4178 nan 0.1000 0.0396
## 6 1.3909 nan 0.1000 0.0413
## 7 1.3648 nan 0.1000 0.0432
## 8 1.3386 nan 0.1000 0.0333
## 9 1.3175 nan 0.1000 0.0314
## 10 1.2967 nan 0.1000 0.0268
## 20 1.1492 nan 0.1000 0.0202
## 40 0.9747 nan 0.1000 0.0080
## 60 0.8641 nan 0.1000 0.0088
## 80 0.7804 nan 0.1000 0.0034
## 100 0.7154 nan 0.1000 0.0032
## 120 0.6636 nan 0.1000 0.0031
## 140 0.6177 nan 0.1000 0.0031
## 150 0.5954 nan 0.1000 0.0018
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1708
## 2 1.5018 nan 0.1000 0.1247
## 3 1.4239 nan 0.1000 0.0952
## 4 1.3643 nan 0.1000 0.0776
## 5 1.3159 nan 0.1000 0.0651
## 6 1.2750 nan 0.1000 0.0731
## 7 1.2303 nan 0.1000 0.0489
## 8 1.1980 nan 0.1000 0.0557
## 9 1.1643 nan 0.1000 0.0437
## 10 1.1380 nan 0.1000 0.0377
## 20 0.9426 nan 0.1000 0.0233
## 40 0.7083 nan 0.1000 0.0104
## 60 0.5780 nan 0.1000 0.0077
## 80 0.4830 nan 0.1000 0.0061
## 100 0.4114 nan 0.1000 0.0035
## 120 0.3564 nan 0.1000 0.0023
## 140 0.3169 nan 0.1000 0.0025
## 150 0.2995 nan 0.1000 0.0017
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2136
## 2 1.4751 nan 0.1000 0.1514
## 3 1.3823 nan 0.1000 0.1150
## 4 1.3111 nan 0.1000 0.1002
## 5 1.2491 nan 0.1000 0.0830
## 6 1.1974 nan 0.1000 0.0705
## 7 1.1523 nan 0.1000 0.0833
## 8 1.1018 nan 0.1000 0.0562
## 9 1.0675 nan 0.1000 0.0535
## 10 1.0339 nan 0.1000 0.0490
## 20 0.8066 nan 0.1000 0.0268
## 40 0.5527 nan 0.1000 0.0104
## 60 0.4223 nan 0.1000 0.0085
## 80 0.3362 nan 0.1000 0.0041
## 100 0.2770 nan 0.1000 0.0025
## 120 0.2308 nan 0.1000 0.0012
## 140 0.1965 nan 0.1000 0.0014
## 150 0.1822 nan 0.1000 0.0016
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1169
## 2 1.5360 nan 0.1000 0.0794
## 3 1.4874 nan 0.1000 0.0611
## 4 1.4493 nan 0.1000 0.0519
## 5 1.4169 nan 0.1000 0.0439
## 6 1.3886 nan 0.1000 0.0423
## 7 1.3619 nan 0.1000 0.0399
## 8 1.3363 nan 0.1000 0.0315
## 9 1.3162 nan 0.1000 0.0301
## 10 1.2972 nan 0.1000 0.0319
## 20 1.1507 nan 0.1000 0.0161
## 40 0.9784 nan 0.1000 0.0104
## 60 0.8678 nan 0.1000 0.0082
## 80 0.7845 nan 0.1000 0.0043
## 100 0.7187 nan 0.1000 0.0043
## 120 0.6634 nan 0.1000 0.0022
## 140 0.6191 nan 0.1000 0.0036
## 150 0.5991 nan 0.1000 0.0030
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1604
## 2 1.5031 nan 0.1000 0.1219
## 3 1.4276 nan 0.1000 0.0952
## 4 1.3688 nan 0.1000 0.0822
## 5 1.3184 nan 0.1000 0.0674
## 6 1.2757 nan 0.1000 0.0662
## 7 1.2335 nan 0.1000 0.0613
## 8 1.1965 nan 0.1000 0.0549
## 9 1.1630 nan 0.1000 0.0430
## 10 1.1357 nan 0.1000 0.0449
## 20 0.9360 nan 0.1000 0.0237
## 40 0.7027 nan 0.1000 0.0130
## 60 0.5727 nan 0.1000 0.0058
## 80 0.4780 nan 0.1000 0.0060
## 100 0.4124 nan 0.1000 0.0037
## 120 0.3597 nan 0.1000 0.0024
## 140 0.3184 nan 0.1000 0.0022
## 150 0.2995 nan 0.1000 0.0020
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2163
## 2 1.4745 nan 0.1000 0.1531
## 3 1.3788 nan 0.1000 0.1114
## 4 1.3097 nan 0.1000 0.1091
## 5 1.2439 nan 0.1000 0.0869
## 6 1.1901 nan 0.1000 0.0740
## 7 1.1446 nan 0.1000 0.0688
## 8 1.1021 nan 0.1000 0.0548
## 9 1.0674 nan 0.1000 0.0496
## 10 1.0366 nan 0.1000 0.0547
## 20 0.7952 nan 0.1000 0.0232
## 40 0.5464 nan 0.1000 0.0098
## 60 0.4215 nan 0.1000 0.0056
## 80 0.3320 nan 0.1000 0.0055
## 100 0.2759 nan 0.1000 0.0023
## 120 0.2308 nan 0.1000 0.0023
## 140 0.1975 nan 0.1000 0.0015
## 150 0.1826 nan 0.1000 0.0011
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1174
## 2 1.5363 nan 0.1000 0.0788
## 3 1.4870 nan 0.1000 0.0594
## 4 1.4478 nan 0.1000 0.0519
## 5 1.4161 nan 0.1000 0.0367
## 6 1.3918 nan 0.1000 0.0420
## 7 1.3647 nan 0.1000 0.0405
## 8 1.3399 nan 0.1000 0.0329
## 9 1.3187 nan 0.1000 0.0313
## 10 1.3001 nan 0.1000 0.0294
## 20 1.1524 nan 0.1000 0.0159
## 40 0.9790 nan 0.1000 0.0105
## 60 0.8656 nan 0.1000 0.0057
## 80 0.7835 nan 0.1000 0.0046
## 100 0.7187 nan 0.1000 0.0038
## 120 0.6653 nan 0.1000 0.0026
## 140 0.6193 nan 0.1000 0.0015
## 150 0.5993 nan 0.1000 0.0030
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1708
## 2 1.5000 nan 0.1000 0.1174
## 3 1.4279 nan 0.1000 0.0988
## 4 1.3669 nan 0.1000 0.0718
## 5 1.3207 nan 0.1000 0.0741
## 6 1.2746 nan 0.1000 0.0680
## 7 1.2331 nan 0.1000 0.0517
## 8 1.2007 nan 0.1000 0.0562
## 9 1.1668 nan 0.1000 0.0474
## 10 1.1379 nan 0.1000 0.0471
## 20 0.9424 nan 0.1000 0.0255
## 40 0.7147 nan 0.1000 0.0136
## 60 0.5835 nan 0.1000 0.0096
## 80 0.4882 nan 0.1000 0.0047
## 100 0.4177 nan 0.1000 0.0029
## 120 0.3623 nan 0.1000 0.0030
## 140 0.3222 nan 0.1000 0.0024
## 150 0.3018 nan 0.1000 0.0026
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2234
## 2 1.4707 nan 0.1000 0.1499
## 3 1.3780 nan 0.1000 0.1148
## 4 1.3072 nan 0.1000 0.0960
## 5 1.2470 nan 0.1000 0.0838
## 6 1.1942 nan 0.1000 0.0781
## 7 1.1467 nan 0.1000 0.0677
## 8 1.1052 nan 0.1000 0.0704
## 9 1.0616 nan 0.1000 0.0439
## 10 1.0324 nan 0.1000 0.0553
## 20 0.8032 nan 0.1000 0.0245
## 40 0.5561 nan 0.1000 0.0127
## 60 0.4246 nan 0.1000 0.0083
## 80 0.3447 nan 0.1000 0.0046
## 100 0.2822 nan 0.1000 0.0027
## 120 0.2376 nan 0.1000 0.0032
## 140 0.2012 nan 0.1000 0.0017
## 150 0.1864 nan 0.1000 0.0015
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1187
## 2 1.5364 nan 0.1000 0.0765
## 3 1.4874 nan 0.1000 0.0607
## 4 1.4498 nan 0.1000 0.0525
## 5 1.4167 nan 0.1000 0.0360
## 6 1.3937 nan 0.1000 0.0436
## 7 1.3670 nan 0.1000 0.0388
## 8 1.3417 nan 0.1000 0.0340
## 9 1.3191 nan 0.1000 0.0312
## 10 1.2997 nan 0.1000 0.0305
## 20 1.1539 nan 0.1000 0.0155
## 40 0.9796 nan 0.1000 0.0090
## 60 0.8713 nan 0.1000 0.0074
## 80 0.7871 nan 0.1000 0.0057
## 100 0.7198 nan 0.1000 0.0026
## 120 0.6657 nan 0.1000 0.0028
## 140 0.6199 nan 0.1000 0.0020
## 150 0.5993 nan 0.1000 0.0029
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.1679
## 2 1.5026 nan 0.1000 0.1194
## 3 1.4282 nan 0.1000 0.0938
## 4 1.3697 nan 0.1000 0.0737
## 5 1.3222 nan 0.1000 0.0705
## 6 1.2792 nan 0.1000 0.0668
## 7 1.2375 nan 0.1000 0.0572
## 8 1.2023 nan 0.1000 0.0471
## 9 1.1728 nan 0.1000 0.0430
## 10 1.1467 nan 0.1000 0.0394
## 20 0.9436 nan 0.1000 0.0293
## 40 0.7178 nan 0.1000 0.0114
## 60 0.5817 nan 0.1000 0.0107
## 80 0.4855 nan 0.1000 0.0057
## 100 0.4163 nan 0.1000 0.0029
## 120 0.3624 nan 0.1000 0.0034
## 140 0.3216 nan 0.1000 0.0025
## 150 0.3023 nan 0.1000 0.0019
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2184
## 2 1.4736 nan 0.1000 0.1473
## 3 1.3811 nan 0.1000 0.1160
## 4 1.3082 nan 0.1000 0.0999
## 5 1.2478 nan 0.1000 0.0879
## 6 1.1938 nan 0.1000 0.0643
## 7 1.1530 nan 0.1000 0.0761
## 8 1.1068 nan 0.1000 0.0580
## 9 1.0699 nan 0.1000 0.0497
## 10 1.0377 nan 0.1000 0.0446
## 20 0.8056 nan 0.1000 0.0276
## 40 0.5556 nan 0.1000 0.0098
## 60 0.4251 nan 0.1000 0.0091
## 80 0.3391 nan 0.1000 0.0062
## 100 0.2804 nan 0.1000 0.0022
## 120 0.2348 nan 0.1000 0.0029
## 140 0.2025 nan 0.1000 0.0013
## 150 0.1880 nan 0.1000 0.0015
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 1.6094 nan 0.1000 0.2175
## 2 1.4770 nan 0.1000 0.1531
## 3 1.3841 nan 0.1000 0.1156
## 4 1.3116 nan 0.1000 0.0968
## 5 1.2515 nan 0.1000 0.0870
## 6 1.1978 nan 0.1000 0.0691
## 7 1.1541 nan 0.1000 0.0755
## 8 1.1075 nan 0.1000 0.0547
## 9 1.0742 nan 0.1000 0.0587
## 10 1.0388 nan 0.1000 0.0429
## 20 0.8070 nan 0.1000 0.0275
## 40 0.5645 nan 0.1000 0.0130
## 60 0.4278 nan 0.1000 0.0079
## 80 0.3423 nan 0.1000 0.0046
## 100 0.2840 nan 0.1000 0.0035
## 120 0.2364 nan 0.1000 0.0029
## 140 0.2034 nan 0.1000 0.0018
## 150 0.1904 nan 0.1000 0.0016
model <- c("RPART", "Random Forest","GBM")
Accuracy <- c(max(rpart1$results$Accuracy),
confusionMatrix(rf1$predicted, training$classe)[3][[1]][[1]],
max(gbm1$results$Accuracy))
performance <- cbind(model,Accuracy)
print(performance)
## model Accuracy
## [1,] "RPART" "0.502153986630685"
## [2,] "Random Forest" "0.994394700444056"
## [3,] "GBM" "0.957560841788316"
rpart1.pred <- predict(rpart1, newdata = testing)
rf1.pred <- predict(rf1, newdata = testing)
gbm1.pred <- predict(gbm1, newdata = testing)
model <- c("RPART", "Random Forest","GBM")
Accuracy <- c(confusionMatrix(rpart1.pred, testing$classe)[3][[1]][[1]],
confusionMatrix(rf1.pred, testing$classe)[3][[1]][[1]],
confusionMatrix(gbm1.pred, testing$classe)[3][[1]][[1]])
performance <- cbind(model,Accuracy)
print(performance)
## model Accuracy
## [1,] "RPART" "0.488190314358539"
## [2,] "Random Forest" "0.995921835174172"
## [3,] "GBM" "0.962107051826678"
Looking at accuracy on both training and testing data, Random Forest has generated has the best model.
Final Submission on the testing dataset
names <- colnames(training)
names <- names[names %in% "classe" == FALSE]
pml.test<-pml.test[,names]
pml.test[,1:n] <- predict(preObj, pml.test[,1:n])
pred_test <- predict(rf1, newdata = pml.test)
print(pred_test)
## 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