-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPA.html
More file actions
801 lines (728 loc) · 52.4 KB
/
Copy pathPA.html
File metadata and controls
801 lines (728 loc) · 52.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=9" >
<title>Building Classifier by Machine Learning</title>
<style type="text/css">
body, td {
font-family: sans-serif;
background-color: white;
font-size: 12px;
margin: 8px;
}
tt, code, pre {
font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace;
}
h1 {
font-size:2.2em;
}
h2 {
font-size:1.8em;
}
h3 {
font-size:1.4em;
}
h4 {
font-size:1.0em;
}
h5 {
font-size:0.9em;
}
h6 {
font-size:0.8em;
}
a:visited {
color: rgb(50%, 0%, 50%);
}
pre {
margin-top: 0;
max-width: 95%;
border: 1px solid #ccc;
white-space: pre-wrap;
}
pre code {
display: block; padding: 0.5em;
}
code.r, code.cpp {
background-color: #F8F8F8;
}
table, td, th {
border: none;
}
blockquote {
color:#666666;
margin:0;
padding-left: 1em;
border-left: 0.5em #EEE solid;
}
hr {
height: 0px;
border-bottom: none;
border-top-width: thin;
border-top-style: dotted;
border-top-color: #999999;
}
@media print {
* {
background: transparent !important;
color: black !important;
filter:none !important;
-ms-filter: none !important;
}
body {
font-size:12pt;
max-width:100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
visibility: hidden;
page-break-before: always;
}
pre, blockquote {
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3; widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}
</style>
<!-- Styles for R syntax highlighter -->
<style type="text/css">
pre .operator,
pre .paren {
color: rgb(104, 118, 135)
}
pre .literal {
color: rgb(88, 72, 246)
}
pre .number {
color: rgb(0, 0, 205);
}
pre .comment {
color: rgb(76, 136, 107);
}
pre .keyword {
color: rgb(0, 0, 255);
}
pre .identifier {
color: rgb(0, 0, 0);
}
pre .string {
color: rgb(3, 106, 7);
}
</style>
<!-- R syntax highlighter -->
<script type="text/javascript">
var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/</gm,"<")}function f(r,q,p){return RegExp(q,"m"+(r.cI?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"</span>":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"</span>":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"</",c:[hljs.CLCM,hljs.CBLCLM,hljs.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}};
hljs.initHighlightingOnLoad();
</script>
</head>
<body>
<h1>Building Classifier by Machine Learning</h1>
<h3>This is a short report on building an activity classifier by machine learning algorithm that examines data collected by sensors worn by different subjects. The machine learning algorithm automatically finds a good set of rules (decisions) that accurately categorize five different activity classes.</h3>
<p>First we load both training and testing data from local directory.</p>
<pre><code class="r">training=read.csv('pml-training.csv',stringsAsFactor=F)
testing=read.csv('pml-testing.csv',stringsAsFactor=F)
</code></pre>
<p>Examine the training data</p>
<pre><code class="r">summary(training)
</code></pre>
<pre><code>## X user_name raw_timestamp_part_1
## Min. : 1 Length:19622 Min. :1.32e+09
## 1st Qu.: 4906 Class :character 1st Qu.:1.32e+09
## Median : 9812 Mode :character Median :1.32e+09
## Mean : 9812 Mean :1.32e+09
## 3rd Qu.:14717 3rd Qu.:1.32e+09
## Max. :19622 Max. :1.32e+09
##
## raw_timestamp_part_2 cvtd_timestamp new_window num_window
## Min. : 294 Length:19622 Length:19622 Min. : 1
## 1st Qu.:252912 Class :character Class :character 1st Qu.:222
## Median :496380 Mode :character Mode :character Median :424
## Mean :500656 Mean :431
## 3rd Qu.:751891 3rd Qu.:644
## Max. :998801 Max. :864
##
## roll_belt pitch_belt yaw_belt total_accel_belt
## Min. :-28.9 Min. :-55.80 Min. :-180.0 Min. : 0.0
## 1st Qu.: 1.1 1st Qu.: 1.76 1st Qu.: -88.3 1st Qu.: 3.0
## Median :113.0 Median : 5.28 Median : -13.0 Median :17.0
## Mean : 64.4 Mean : 0.31 Mean : -11.2 Mean :11.3
## 3rd Qu.:123.0 3rd Qu.: 14.90 3rd Qu.: 12.9 3rd Qu.:18.0
## Max. :162.0 Max. : 60.30 Max. : 179.0 Max. :29.0
##
## kurtosis_roll_belt kurtosis_picth_belt kurtosis_yaw_belt
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## skewness_roll_belt skewness_roll_belt.1 skewness_yaw_belt
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## max_roll_belt max_picth_belt max_yaw_belt min_roll_belt
## Min. :-94 Min. : 3 Length:19622 Min. :-180
## 1st Qu.:-88 1st Qu.: 5 Class :character 1st Qu.: -88
## Median : -5 Median :18 Mode :character Median : -8
## Mean : -7 Mean :13 Mean : -10
## 3rd Qu.: 18 3rd Qu.:19 3rd Qu.: 9
## Max. :180 Max. :30 Max. : 173
## NA's :19216 NA's :19216 NA's :19216
## min_pitch_belt min_yaw_belt amplitude_roll_belt
## Min. : 0 Length:19622 Min. : 0
## 1st Qu.: 3 Class :character 1st Qu.: 0
## Median :16 Mode :character Median : 1
## Mean :11 Mean : 4
## 3rd Qu.:17 3rd Qu.: 2
## Max. :23 Max. :360
## NA's :19216 NA's :19216
## amplitude_pitch_belt amplitude_yaw_belt var_total_accel_belt
## Min. : 0 Length:19622 Min. : 0
## 1st Qu.: 1 Class :character 1st Qu.: 0
## Median : 1 Mode :character Median : 0
## Mean : 2 Mean : 1
## 3rd Qu.: 2 3rd Qu.: 0
## Max. :12 Max. :16
## NA's :19216 NA's :19216
## avg_roll_belt stddev_roll_belt var_roll_belt avg_pitch_belt
## Min. :-27 Min. : 0 Min. : 0 Min. :-51
## 1st Qu.: 1 1st Qu.: 0 1st Qu.: 0 1st Qu.: 2
## Median :116 Median : 0 Median : 0 Median : 5
## Mean : 68 Mean : 1 Mean : 8 Mean : 1
## 3rd Qu.:123 3rd Qu.: 1 3rd Qu.: 0 3rd Qu.: 16
## Max. :157 Max. :14 Max. :201 Max. : 60
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## stddev_pitch_belt var_pitch_belt avg_yaw_belt stddev_yaw_belt
## Min. :0 Min. : 0 Min. :-138 Min. : 0
## 1st Qu.:0 1st Qu.: 0 1st Qu.: -88 1st Qu.: 0
## Median :0 Median : 0 Median : -7 Median : 0
## Mean :1 Mean : 1 Mean : -9 Mean : 1
## 3rd Qu.:1 3rd Qu.: 0 3rd Qu.: 14 3rd Qu.: 1
## Max. :4 Max. :16 Max. : 174 Max. :177
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## var_yaw_belt gyros_belt_x gyros_belt_y gyros_belt_z
## Min. : 0 Min. :-1.0400 Min. :-0.6400 Min. :-1.460
## 1st Qu.: 0 1st Qu.:-0.0300 1st Qu.: 0.0000 1st Qu.:-0.200
## Median : 0 Median : 0.0300 Median : 0.0200 Median :-0.100
## Mean : 107 Mean :-0.0056 Mean : 0.0396 Mean :-0.130
## 3rd Qu.: 0 3rd Qu.: 0.1100 3rd Qu.: 0.1100 3rd Qu.:-0.020
## Max. :31183 Max. : 2.2200 Max. : 0.6400 Max. : 1.620
## NA's :19216
## accel_belt_x accel_belt_y accel_belt_z magnet_belt_x
## Min. :-120.00 Min. :-69.0 Min. :-275.0 Min. :-52.0
## 1st Qu.: -21.00 1st Qu.: 3.0 1st Qu.:-162.0 1st Qu.: 9.0
## Median : -15.00 Median : 35.0 Median :-152.0 Median : 35.0
## Mean : -5.59 Mean : 30.1 Mean : -72.6 Mean : 55.6
## 3rd Qu.: -5.00 3rd Qu.: 61.0 3rd Qu.: 27.0 3rd Qu.: 59.0
## Max. : 85.00 Max. :164.0 Max. : 105.0 Max. :485.0
##
## magnet_belt_y magnet_belt_z roll_arm pitch_arm
## Min. :354 Min. :-623 Min. :-180.0 Min. :-88.80
## 1st Qu.:581 1st Qu.:-375 1st Qu.: -31.8 1st Qu.:-25.90
## Median :601 Median :-320 Median : 0.0 Median : 0.00
## Mean :594 Mean :-346 Mean : 17.8 Mean : -4.61
## 3rd Qu.:610 3rd Qu.:-306 3rd Qu.: 77.3 3rd Qu.: 11.20
## Max. :673 Max. : 293 Max. : 180.0 Max. : 88.50
##
## yaw_arm total_accel_arm var_accel_arm avg_roll_arm
## Min. :-180.00 Min. : 1.0 Min. : 0 Min. :-167
## 1st Qu.: -43.10 1st Qu.:17.0 1st Qu.: 9 1st Qu.: -38
## Median : 0.00 Median :27.0 Median : 41 Median : 0
## Mean : -0.62 Mean :25.5 Mean : 53 Mean : 13
## 3rd Qu.: 45.88 3rd Qu.:33.0 3rd Qu.: 76 3rd Qu.: 76
## Max. : 180.00 Max. :66.0 Max. :332 Max. : 163
## NA's :19216 NA's :19216
## stddev_roll_arm var_roll_arm avg_pitch_arm stddev_pitch_arm
## Min. : 0 Min. : 0 Min. :-82 Min. : 0
## 1st Qu.: 1 1st Qu.: 2 1st Qu.:-23 1st Qu.: 2
## Median : 6 Median : 33 Median : 0 Median : 8
## Mean : 11 Mean : 417 Mean : -5 Mean :10
## 3rd Qu.: 15 3rd Qu.: 223 3rd Qu.: 8 3rd Qu.:16
## Max. :162 Max. :26232 Max. : 76 Max. :43
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## var_pitch_arm avg_yaw_arm stddev_yaw_arm var_yaw_arm
## Min. : 0 Min. :-173 Min. : 0 Min. : 0
## 1st Qu.: 3 1st Qu.: -29 1st Qu.: 3 1st Qu.: 7
## Median : 66 Median : 0 Median : 17 Median : 278
## Mean : 196 Mean : 2 Mean : 22 Mean : 1056
## 3rd Qu.: 267 3rd Qu.: 38 3rd Qu.: 36 3rd Qu.: 1295
## Max. :1885 Max. : 152 Max. :177 Max. :31345
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## gyros_arm_x gyros_arm_y gyros_arm_z accel_arm_x
## Min. :-6.370 Min. :-3.440 Min. :-2.33 Min. :-404.0
## 1st Qu.:-1.330 1st Qu.:-0.800 1st Qu.:-0.07 1st Qu.:-242.0
## Median : 0.080 Median :-0.240 Median : 0.23 Median : -44.0
## Mean : 0.043 Mean :-0.257 Mean : 0.27 Mean : -60.2
## 3rd Qu.: 1.570 3rd Qu.: 0.140 3rd Qu.: 0.72 3rd Qu.: 84.0
## Max. : 4.870 Max. : 2.840 Max. : 3.02 Max. : 437.0
##
## accel_arm_y accel_arm_z magnet_arm_x magnet_arm_y
## Min. :-318.0 Min. :-636.0 Min. :-584 Min. :-392
## 1st Qu.: -54.0 1st Qu.:-143.0 1st Qu.:-300 1st Qu.: -9
## Median : 14.0 Median : -47.0 Median : 289 Median : 202
## Mean : 32.6 Mean : -71.2 Mean : 192 Mean : 157
## 3rd Qu.: 139.0 3rd Qu.: 23.0 3rd Qu.: 637 3rd Qu.: 323
## Max. : 308.0 Max. : 292.0 Max. : 782 Max. : 583
##
## magnet_arm_z kurtosis_roll_arm kurtosis_picth_arm kurtosis_yaw_arm
## Min. :-597 Length:19622 Length:19622 Length:19622
## 1st Qu.: 131 Class :character Class :character Class :character
## Median : 444 Mode :character Mode :character Mode :character
## Mean : 306
## 3rd Qu.: 545
## Max. : 694
##
## skewness_roll_arm skewness_pitch_arm skewness_yaw_arm max_roll_arm
## Length:19622 Length:19622 Length:19622 Min. :-73
## Class :character Class :character Class :character 1st Qu.: 0
## Mode :character Mode :character Mode :character Median : 5
## Mean : 11
## 3rd Qu.: 27
## Max. : 86
## NA's :19216
## max_picth_arm max_yaw_arm min_roll_arm min_pitch_arm
## Min. :-173 Min. : 4 Min. :-89 Min. :-180
## 1st Qu.: -2 1st Qu.:29 1st Qu.:-42 1st Qu.: -73
## Median : 23 Median :34 Median :-22 Median : -34
## Mean : 36 Mean :35 Mean :-21 Mean : -34
## 3rd Qu.: 96 3rd Qu.:41 3rd Qu.: 0 3rd Qu.: 0
## Max. : 180 Max. :65 Max. : 66 Max. : 152
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## min_yaw_arm amplitude_roll_arm amplitude_pitch_arm amplitude_yaw_arm
## Min. : 1 Min. : 0 Min. : 0 Min. : 0
## 1st Qu.: 8 1st Qu.: 5 1st Qu.: 10 1st Qu.:13
## Median :13 Median : 28 Median : 55 Median :22
## Mean :15 Mean : 32 Mean : 70 Mean :21
## 3rd Qu.:19 3rd Qu.: 51 3rd Qu.:115 3rd Qu.:29
## Max. :38 Max. :120 Max. :360 Max. :52
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## roll_dumbbell pitch_dumbbell yaw_dumbbell
## Min. :-153.7 Min. :-149.6 Min. :-150.87
## 1st Qu.: -18.5 1st Qu.: -40.9 1st Qu.: -77.64
## Median : 48.2 Median : -21.0 Median : -3.32
## Mean : 23.8 Mean : -10.8 Mean : 1.67
## 3rd Qu.: 67.6 3rd Qu.: 17.5 3rd Qu.: 79.64
## Max. : 153.6 Max. : 149.4 Max. : 154.95
##
## kurtosis_roll_dumbbell kurtosis_picth_dumbbell kurtosis_yaw_dumbbell
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## skewness_roll_dumbbell skewness_pitch_dumbbell skewness_yaw_dumbbell
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## max_roll_dumbbell max_picth_dumbbell max_yaw_dumbbell min_roll_dumbbell
## Min. :-70 Min. :-113 Length:19622 Min. :-150
## 1st Qu.:-27 1st Qu.: -67 Class :character 1st Qu.: -60
## Median : 15 Median : 40 Mode :character Median : -44
## Mean : 14 Mean : 33 Mean : -41
## 3rd Qu.: 51 3rd Qu.: 133 3rd Qu.: -25
## Max. :137 Max. : 155 Max. : 73
## NA's :19216 NA's :19216 NA's :19216
## min_pitch_dumbbell min_yaw_dumbbell amplitude_roll_dumbbell
## Min. :-147 Length:19622 Min. : 0
## 1st Qu.: -92 Class :character 1st Qu.: 15
## Median : -66 Mode :character Median : 35
## Mean : -33 Mean : 55
## 3rd Qu.: 21 3rd Qu.: 81
## Max. : 121 Max. :256
## NA's :19216 NA's :19216
## amplitude_pitch_dumbbell amplitude_yaw_dumbbell total_accel_dumbbell
## Min. : 0 Length:19622 Min. : 0.0
## 1st Qu.: 17 Class :character 1st Qu.: 4.0
## Median : 42 Mode :character Median :10.0
## Mean : 66 Mean :13.7
## 3rd Qu.:100 3rd Qu.:19.0
## Max. :274 Max. :58.0
## NA's :19216
## var_accel_dumbbell avg_roll_dumbbell stddev_roll_dumbbell
## Min. : 0 Min. :-129 Min. : 0
## 1st Qu.: 0 1st Qu.: -12 1st Qu.: 5
## Median : 1 Median : 48 Median : 12
## Mean : 4 Mean : 24 Mean : 21
## 3rd Qu.: 3 3rd Qu.: 64 3rd Qu.: 26
## Max. :230 Max. : 126 Max. :124
## NA's :19216 NA's :19216 NA's :19216
## var_roll_dumbbell avg_pitch_dumbbell stddev_pitch_dumbbell
## Min. : 0 Min. :-71 Min. : 0
## 1st Qu.: 22 1st Qu.:-42 1st Qu.: 3
## Median : 149 Median :-20 Median : 8
## Mean : 1020 Mean :-12 Mean :13
## 3rd Qu.: 695 3rd Qu.: 13 3rd Qu.:19
## Max. :15321 Max. : 94 Max. :83
## NA's :19216 NA's :19216 NA's :19216
## var_pitch_dumbbell avg_yaw_dumbbell stddev_yaw_dumbbell var_yaw_dumbbell
## Min. : 0 Min. :-118 Min. : 0 Min. : 0
## 1st Qu.: 12 1st Qu.: -77 1st Qu.: 4 1st Qu.: 15
## Median : 65 Median : -5 Median : 10 Median : 105
## Mean : 350 Mean : 0 Mean : 17 Mean : 590
## 3rd Qu.: 370 3rd Qu.: 71 3rd Qu.: 25 3rd Qu.: 609
## Max. :6836 Max. : 135 Max. :107 Max. :11468
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## gyros_dumbbell_x gyros_dumbbell_y gyros_dumbbell_z accel_dumbbell_x
## Min. :-204.00 Min. :-2.10 Min. : -2.4 Min. :-419.0
## 1st Qu.: -0.03 1st Qu.:-0.14 1st Qu.: -0.3 1st Qu.: -50.0
## Median : 0.13 Median : 0.03 Median : -0.1 Median : -8.0
## Mean : 0.16 Mean : 0.05 Mean : -0.1 Mean : -28.6
## 3rd Qu.: 0.35 3rd Qu.: 0.21 3rd Qu.: 0.0 3rd Qu.: 11.0
## Max. : 2.22 Max. :52.00 Max. :317.0 Max. : 235.0
##
## accel_dumbbell_y accel_dumbbell_z magnet_dumbbell_x magnet_dumbbell_y
## Min. :-189.0 Min. :-334.0 Min. :-643 Min. :-3600
## 1st Qu.: -8.0 1st Qu.:-142.0 1st Qu.:-535 1st Qu.: 231
## Median : 41.5 Median : -1.0 Median :-479 Median : 311
## Mean : 52.6 Mean : -38.3 Mean :-328 Mean : 221
## 3rd Qu.: 111.0 3rd Qu.: 38.0 3rd Qu.:-304 3rd Qu.: 390
## Max. : 315.0 Max. : 318.0 Max. : 592 Max. : 633
##
## magnet_dumbbell_z roll_forearm pitch_forearm yaw_forearm
## Min. :-262.0 Min. :-180.00 Min. :-72.50 Min. :-180.0
## 1st Qu.: -45.0 1st Qu.: -0.74 1st Qu.: 0.00 1st Qu.: -68.6
## Median : 13.0 Median : 21.70 Median : 9.24 Median : 0.0
## Mean : 46.1 Mean : 33.83 Mean : 10.71 Mean : 19.2
## 3rd Qu.: 95.0 3rd Qu.: 140.00 3rd Qu.: 28.40 3rd Qu.: 110.0
## Max. : 452.0 Max. : 180.00 Max. : 89.80 Max. : 180.0
##
## kurtosis_roll_forearm kurtosis_picth_forearm kurtosis_yaw_forearm
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## skewness_roll_forearm skewness_pitch_forearm skewness_yaw_forearm
## Length:19622 Length:19622 Length:19622
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## max_roll_forearm max_picth_forearm max_yaw_forearm min_roll_forearm
## Min. :-67 Min. :-151 Length:19622 Min. :-72
## 1st Qu.: 0 1st Qu.: 0 Class :character 1st Qu.: -6
## Median : 27 Median : 113 Mode :character Median : 0
## Mean : 24 Mean : 81 Mean : 0
## 3rd Qu.: 46 3rd Qu.: 175 3rd Qu.: 12
## Max. : 90 Max. : 180 Max. : 62
## NA's :19216 NA's :19216 NA's :19216
## min_pitch_forearm min_yaw_forearm amplitude_roll_forearm
## Min. :-180 Length:19622 Min. : 0
## 1st Qu.:-175 Class :character 1st Qu.: 1
## Median : -61 Mode :character Median : 18
## Mean : -58 Mean : 25
## 3rd Qu.: 0 3rd Qu.: 40
## Max. : 167 Max. :126
## NA's :19216 NA's :19216
## amplitude_pitch_forearm amplitude_yaw_forearm total_accel_forearm
## Min. : 0 Length:19622 Min. : 0.0
## 1st Qu.: 2 Class :character 1st Qu.: 29.0
## Median : 84 Mode :character Median : 36.0
## Mean :139 Mean : 34.7
## 3rd Qu.:350 3rd Qu.: 41.0
## Max. :360 Max. :108.0
## NA's :19216
## var_accel_forearm avg_roll_forearm stddev_roll_forearm var_roll_forearm
## Min. : 0 Min. :-177 Min. : 0 Min. : 0
## 1st Qu.: 7 1st Qu.: -1 1st Qu.: 0 1st Qu.: 0
## Median : 21 Median : 11 Median : 8 Median : 64
## Mean : 34 Mean : 33 Mean : 42 Mean : 5274
## 3rd Qu.: 51 3rd Qu.: 107 3rd Qu.: 85 3rd Qu.: 7289
## Max. :173 Max. : 177 Max. :179 Max. :32102
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## avg_pitch_forearm stddev_pitch_forearm var_pitch_forearm avg_yaw_forearm
## Min. :-68 Min. : 0 Min. : 0 Min. :-155
## 1st Qu.: 0 1st Qu.: 0 1st Qu.: 0 1st Qu.: -26
## Median : 12 Median : 6 Median : 30 Median : 0
## Mean : 12 Mean : 8 Mean : 140 Mean : 18
## 3rd Qu.: 28 3rd Qu.:13 3rd Qu.: 166 3rd Qu.: 86
## Max. : 72 Max. :48 Max. :2280 Max. : 169
## NA's :19216 NA's :19216 NA's :19216 NA's :19216
## stddev_yaw_forearm var_yaw_forearm gyros_forearm_x gyros_forearm_y
## Min. : 0 Min. : 0 Min. :-22.000 Min. : -7.02
## 1st Qu.: 1 1st Qu.: 0 1st Qu.: -0.220 1st Qu.: -1.46
## Median : 25 Median : 612 Median : 0.050 Median : 0.03
## Mean : 45 Mean : 4640 Mean : 0.158 Mean : 0.08
## 3rd Qu.: 86 3rd Qu.: 7368 3rd Qu.: 0.560 3rd Qu.: 1.62
## Max. :198 Max. :39009 Max. : 3.970 Max. :311.00
## NA's :19216 NA's :19216
## gyros_forearm_z accel_forearm_x accel_forearm_y accel_forearm_z
## Min. : -8.09 Min. :-498.0 Min. :-632 Min. :-446.0
## 1st Qu.: -0.18 1st Qu.:-178.0 1st Qu.: 57 1st Qu.:-182.0
## Median : 0.08 Median : -57.0 Median : 201 Median : -39.0
## Mean : 0.15 Mean : -61.7 Mean : 164 Mean : -55.3
## 3rd Qu.: 0.49 3rd Qu.: 76.0 3rd Qu.: 312 3rd Qu.: 26.0
## Max. :231.00 Max. : 477.0 Max. : 923 Max. : 291.0
##
## magnet_forearm_x magnet_forearm_y magnet_forearm_z classe
## Min. :-1280 Min. :-896 Min. :-973 Length:19622
## 1st Qu.: -616 1st Qu.: 2 1st Qu.: 191 Class :character
## Median : -378 Median : 591 Median : 511 Mode :character
## Mean : -313 Mean : 380 Mean : 394
## 3rd Qu.: -73 3rd Qu.: 737 3rd Qu.: 653
## Max. : 672 Max. :1480 Max. :1090
##
</code></pre>
<p>It looks like there are many NA in training data. Let's see how many NA in those incomplete columns.</p>
<pre><code class="r">training[training==""]=NA
training[training=="NA"]=NA
naCounts=colSums(is.na(training))
naCounts[naCounts>0]
</code></pre>
<pre><code>## kurtosis_roll_belt kurtosis_picth_belt kurtosis_yaw_belt
## 19216 19216 19216
## skewness_roll_belt skewness_roll_belt.1 skewness_yaw_belt
## 19216 19216 19216
## max_roll_belt max_picth_belt max_yaw_belt
## 19216 19216 19216
## min_roll_belt min_pitch_belt min_yaw_belt
## 19216 19216 19216
## amplitude_roll_belt amplitude_pitch_belt amplitude_yaw_belt
## 19216 19216 19216
## var_total_accel_belt avg_roll_belt stddev_roll_belt
## 19216 19216 19216
## var_roll_belt avg_pitch_belt stddev_pitch_belt
## 19216 19216 19216
## var_pitch_belt avg_yaw_belt stddev_yaw_belt
## 19216 19216 19216
## var_yaw_belt var_accel_arm avg_roll_arm
## 19216 19216 19216
## stddev_roll_arm var_roll_arm avg_pitch_arm
## 19216 19216 19216
## stddev_pitch_arm var_pitch_arm avg_yaw_arm
## 19216 19216 19216
## stddev_yaw_arm var_yaw_arm kurtosis_roll_arm
## 19216 19216 19216
## kurtosis_picth_arm kurtosis_yaw_arm skewness_roll_arm
## 19216 19216 19216
## skewness_pitch_arm skewness_yaw_arm max_roll_arm
## 19216 19216 19216
## max_picth_arm max_yaw_arm min_roll_arm
## 19216 19216 19216
## min_pitch_arm min_yaw_arm amplitude_roll_arm
## 19216 19216 19216
## amplitude_pitch_arm amplitude_yaw_arm kurtosis_roll_dumbbell
## 19216 19216 19216
## kurtosis_picth_dumbbell kurtosis_yaw_dumbbell skewness_roll_dumbbell
## 19216 19216 19216
## skewness_pitch_dumbbell skewness_yaw_dumbbell max_roll_dumbbell
## 19216 19216 19216
## max_picth_dumbbell max_yaw_dumbbell min_roll_dumbbell
## 19216 19216 19216
## min_pitch_dumbbell min_yaw_dumbbell amplitude_roll_dumbbell
## 19216 19216 19216
## amplitude_pitch_dumbbell amplitude_yaw_dumbbell var_accel_dumbbell
## 19216 19216 19216
## avg_roll_dumbbell stddev_roll_dumbbell var_roll_dumbbell
## 19216 19216 19216
## avg_pitch_dumbbell stddev_pitch_dumbbell var_pitch_dumbbell
## 19216 19216 19216
## avg_yaw_dumbbell stddev_yaw_dumbbell var_yaw_dumbbell
## 19216 19216 19216
## kurtosis_roll_forearm kurtosis_picth_forearm kurtosis_yaw_forearm
## 19216 19216 19216
## skewness_roll_forearm skewness_pitch_forearm skewness_yaw_forearm
## 19216 19216 19216
## max_roll_forearm max_picth_forearm max_yaw_forearm
## 19216 19216 19216
## min_roll_forearm min_pitch_forearm min_yaw_forearm
## 19216 19216 19216
## amplitude_roll_forearm amplitude_pitch_forearm amplitude_yaw_forearm
## 19216 19216 19216
## var_accel_forearm avg_roll_forearm stddev_roll_forearm
## 19216 19216 19216
## var_roll_forearm avg_pitch_forearm stddev_pitch_forearm
## 19216 19216 19216
## var_pitch_forearm avg_yaw_forearm stddev_yaw_forearm
## 19216 19216 19216
## var_yaw_forearm
## 19216
</code></pre>
<p>Since the numbers of NA in above columns are the same and close the number of rows in training, we consider those columns could only convey information from small portion of training data. As a result, we discard those columns in preprocessing stage and apply learning algorithm on data without those columns.</p>
<p>Discard those columns whose number of NA is more than 50% of observations.</p>
<pre><code class="r">usefulTraining=training[,colSums(is.na(training))<=nrow(training)/2]
</code></pre>
<p>Check again remained columns.</p>
<pre><code class="r">str(usefulTraining)
</code></pre>
<pre><code>## 'data.frame': 19622 obs. of 60 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ user_name : chr "carlitos" "carlitos" "carlitos" "carlitos" ...
## $ 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 : chr "05/12/2011 11:23" "05/12/2011 11:23" "05/12/2011 11:23" "05/12/2011 11:23" ...
## $ new_window : chr "no" "no" "no" "no" ...
## $ 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 ...
## $ 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 ...
## $ 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 ...
## $ 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 ...
## $ total_accel_dumbbell: int 37 37 37 37 37 37 37 37 37 37 ...
## $ gyros_dumbbell_x : num 0 0 0 0 0 0 0 0 0 0 ...
## $ gyros_dumbbell_y : num -0.02 -0.02 -0.02 -0.02 -0.02 -0.02 -0.02 -0.02 -0.02 -0.02 ...
## $ gyros_dumbbell_z : num 0 0 0 -0.02 0 0 0 0 0 0 ...
## $ accel_dumbbell_x : int -234 -233 -232 -232 -233 -234 -232 -234 -232 -235 ...
## $ accel_dumbbell_y : int 47 47 46 48 48 48 47 46 47 48 ...
## $ accel_dumbbell_z : int -271 -269 -270 -269 -270 -269 -270 -272 -269 -270 ...
## $ magnet_dumbbell_x : int -559 -555 -561 -552 -554 -558 -551 -555 -549 -558 ...
## $ magnet_dumbbell_y : int 293 296 298 303 292 294 295 300 292 291 ...
## $ magnet_dumbbell_z : num -65 -64 -63 -60 -68 -66 -70 -74 -65 -69 ...
## $ roll_forearm : num 28.4 28.3 28.3 28.1 28 27.9 27.9 27.8 27.7 27.7 ...
## $ pitch_forearm : num -63.9 -63.9 -63.9 -63.9 -63.9 -63.9 -63.9 -63.8 -63.8 -63.8 ...
## $ yaw_forearm : num -153 -153 -152 -152 -152 -152 -152 -152 -152 -152 ...
## $ total_accel_forearm : int 36 36 36 36 36 36 36 36 36 36 ...
## $ gyros_forearm_x : num 0.03 0.02 0.03 0.02 0.02 0.02 0.02 0.02 0.03 0.02 ...
## $ gyros_forearm_y : num 0 0 -0.02 -0.02 0 -0.02 0 -0.02 0 0 ...
## $ gyros_forearm_z : num -0.02 -0.02 0 0 -0.02 -0.03 -0.02 0 -0.02 -0.02 ...
## $ accel_forearm_x : int 192 192 196 189 189 193 195 193 193 190 ...
## $ accel_forearm_y : int 203 203 204 206 206 203 205 205 204 205 ...
## $ accel_forearm_z : int -215 -216 -213 -214 -214 -215 -215 -213 -214 -215 ...
## $ magnet_forearm_x : int -17 -18 -18 -16 -17 -9 -18 -9 -16 -22 ...
## $ magnet_forearm_y : num 654 661 658 658 655 660 659 660 653 656 ...
## $ magnet_forearm_z : num 476 473 469 469 473 478 470 474 476 473 ...
## $ classe : chr "A" "A" "A" "A" ...
</code></pre>
<p>We will only use column 9 to the last column since the first 8 columns are unrelated to measurements of activities.</p>
<pre><code class="r">usefulTraining=usefulTraining[,seq(9,ncol(usefulTraining))]
usefulTraining$classe=factor(usefulTraining$classe)
summary(usefulTraining$classe)
</code></pre>
<pre><code>## A B C D E
## 5580 3797 3422 3216 3607
</code></pre>
<p>Since the number of observations is about 20000, 70% of training data will be used to train the random forest and 30% as cross validation set. Load the caret library first and partition our preprocessed training data.</p>
<pre><code class="r">library(caret)
inTrain=createDataPartition(y=usefulTraining$classe,p=0.7,list=FALSE)
actualTraining=usefulTraining[inTrain,]
actualXValid=usefulTraining[-inTrain,]
</code></pre>
<p>We select random forest as the learning algorithm. After the model is built by learning from our <strong>actualTraining</strong> data frame, the model is validated by <strong>actualXValid</strong> data frame.</p>
<pre><code class="r">library(randomForest)
modFit=randomForest(classe~.,data=actualTraining,method="class")
modFit
</code></pre>
<pre><code>##
## Call:
## randomForest(formula = classe ~ ., data = actualTraining, method = "class")
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 7
##
## OOB estimate of error rate: 0.53%
## Confusion matrix:
## A B C D E class.error
## A 3905 1 0 0 0 0.000256
## B 9 2641 8 0 0 0.006396
## C 0 17 2375 4 0 0.008765
## D 0 0 26 2223 3 0.012877
## E 0 0 1 4 2520 0.001980
</code></pre>
<pre><code class="r">pred=predict(modFit,newdata=actualXValid)
actualXValid$predRight=pred==actualXValid$classe
confusionMatrix(pred,actualXValid$classe)
</code></pre>
<pre><code>## Confusion Matrix and Statistics
##
## Reference
## Prediction A B C D E
## A 1672 5 0 0 0
## B 2 1131 4 0 0
## C 0 3 1022 15 1
## D 0 0 0 949 5
## E 0 0 0 0 1076
##
## Overall Statistics
##
## Accuracy : 0.994
## 95% CI : (0.992, 0.996)
## No Information Rate : 0.284
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.992
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: A Class: B Class: C Class: D Class: E
## Sensitivity 0.999 0.993 0.996 0.984 0.994
## Specificity 0.999 0.999 0.996 0.999 1.000
## Pos Pred Value 0.997 0.995 0.982 0.995 1.000
## Neg Pred Value 1.000 0.998 0.999 0.997 0.999
## Prevalence 0.284 0.194 0.174 0.164 0.184
## Detection Rate 0.284 0.192 0.174 0.161 0.183
## Detection Prevalence 0.285 0.193 0.177 0.162 0.183
## Balanced Accuracy 0.999 0.996 0.996 0.992 0.997
</code></pre>
<p>Based on confusion matrix, we believe our random forest model could predict activity classes with accuracy above 95%. If the test data comes from the same distribution, we believe the out-of-sample error rate will be similar to our in-sample error rate, i.e. less than 5%.</p>
<p>Now let's make the prediction on test data.</p>
<pre><code class="r">pred=predict(modFit,newdata=testing)
pred
</code></pre>
<pre><code>## 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
</code></pre>
</body>
</html>