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