library(class)
search()
##  [1] ".GlobalEnv"        "package:class"     "package:stats"    
##  [4] "package:graphics"  "package:grDevices" "package:utils"    
##  [7] "package:datasets"  "package:methods"   "Autoloads"        
## [10] "package:base"
ls(2)
##  [1] "batchSOM"  "condense"  "knn"       "knn.cv"    "knn1"     
##  [6] "lvq1"      "lvq2"      "lvq3"      "lvqinit"   "lvqtest"  
## [11] "multiedit" "olvq1"     "reduce.nn" "SOM"       "somgrid"
Height=c(175,165,166,178,174,169,168,170)
Weight=c(75,60,77,73,62,68,64,70)
size=factor(c("L","M","L","L","M","M","M","L"))

People=cbind(Height,Weight)

rownames(People)=c("Richard","Deby","Mike","Tom","Bella","John","Ann","Jack")
plot(People, col=ifelse(size=="L","red","blue"),cex=2,lwd=4)

plot(People, col=ifelse(size=="L","red","blue"),cex=0.2)
text(People, labels=row.names(People), cex=1)

#text(People, labels=row.names(People),(col=ifelse(size=="L","red","blue")), cex=1.3)

plot(People,col=ifelse(size=="L","red","blue"),cex=2,lwd=4,asp=1)
legend("bottomright",fill=c(4,2), legend=c("M","L"),title="size",horiz=TRUE,
       bty="n", col=grey(.7),cex=1)

ryan=cbind(173,69)
points(ryan,cex=2,lwd=4)

klasifikasi=knn(People,ryan,size,k=1,prob=T)
klasifikasi=knn(People,ryan,size,k=3,prob=T)
klasifikasi=knn(People,ryan,size,k=5,prob=T)
klasifikasi
## [1] M
## attr(,"prob")
## [1] 0.5
## Levels: L M
str(klasifikasi)
##  Factor w/ 2 levels "L","M": 2
##  - attr(*, "prob")= num 0.5
dim(People)
## [1] 8 2
People[8,]
## Height Weight 
##    170     70
ryan
##      [,1] [,2]
## [1,]  173   69
jarakkuadrat=(170-173)^2+(69-70)^2
jarak=sqrt(jarakkuadrat)

plot(People,col=ifelse(size=="L","red","blue"),cex=0.1, lwd=1, asp=1)
text(People,col=ifelse(size=="L","red","blue"),cex=1, lwd=2, pch=3)

#validasi untuk nilai k=1
klasifikasi1=knn(People,People, size, k=1, prob=T)
klasifikasi
## [1] M
## attr(,"prob")
## [1] 0.5
## Levels: L M
sum(size==klasifikasi1)
## [1] 8
table(klasifikasi1,size)
##             size
## klasifikasi1 L M
##            L 4 0
##            M 0 4
#validasi untuk nilai k=2
klasifikasi2=knn(People,People, size, k=2, prob=T)
klasifikasi
## [1] M
## attr(,"prob")
## [1] 0.5
## Levels: L M
sum(size==klasifikasi2)
## [1] 8
table(klasifikasi2,size) #miss klasifikasi=2/8, tepat=6/8
##             size
## klasifikasi2 L M
##            L 4 0
##            M 0 4
#validasi untuk nilai k=3
klasifikasi3=knn(People,People, size, k=3, prob=T)
klasifikasi
## [1] M
## attr(,"prob")
## [1] 0.5
## Levels: L M
sum(size==klasifikasi3)
## [1] 7
table(klasifikasi3,size) #miss klasifikasinya = 1/8, tepat=7/8
##             size
## klasifikasi3 L M
##            L 3 0
##            M 1 4
#validasi untuk nilai k=5
klasifikasi5=knn(People,People, size, k=5, prob=T)
klasifikasi
## [1] M
## attr(,"prob")
## [1] 0.5
## Levels: L M
sum(size==klasifikasi5)
## [1] 8
table(klasifikasi5,size)
##             size
## klasifikasi5 L M
##            L 4 0
##            M 0 4