# Clustering(군집분석) - 데이터의 패턴에 따른 분류
# 요소 간의 거리값을 이용해서 군집화
# 계층적 군집분석(탐색적 분석)
# 군집의 갯수를 모르는 상태에서 군집화 됨
x <- c(1,2,2,4,5)
y <- c(1,1,4,3,4)
xy <- data.frame(cbind(x, y))
xy
plot(xy, pch = 20, xlab = 'x값', ylab = 'y값', xlim = c(0,6), ylim = c(0,6))
text(xy[,1],xy[,2], labels = abbreviate(rownames(xy)), cex = 0.8, pos = 1, col = 'blue')
dist(xy, method = "euclidean") ^ 2
# 덴드로그램으로 시각화
hc_sl <- hclust(dist(xy, method = "euclidean") ^ 2, method = "single")
hc_sl
plot(hc_sl)
hc_co <- hclust(dist(xy) ^ 2, method = 'complete')
hc_co
plot(hc_co)
# iris dataset으로 군집화
idist <- dist(iris[, 1:4])
idist
hc <- hclust(idist)
plot(hc, hang = -1)
rect.hclust(hc, k = 3, border = 'red')
# 군집 자르기
ghc <- cutree(hc, k =3)
ghc
iris$ghc <- ghc
head(iris, 3)
g1 <- subset(iris, ghc == 1)
g2 <- subset(iris, ghc == 2)
g3 <- subset(iris, ghc == 3)
NROW(g1)
NROW(g2)
NROW(g3)
summary(g1)
summary(g2)
summary(g3)