ADP (R)

R로 하는 군집분석 그리고 silhouette

멋쟁이천재사자 2022. 7. 20. 22:44

 

 

 

?silhouette

data(ruspini)
pr4 <- pam(ruspini, 4)
str(si <- silhouette(pr4))
(ssi <- summary(si))
plot(si) # silhouette plot
plot(si, col = c("red", "green", "blue", "purple"))# with cluster-wise coloring

R에서 실루엣 분석(Silhouette Analysis) 실시하기 


[출처] 7.54.1 R에서 실루엣 분석(Silhouette Analysis) 실시하기|작성자 아이리스

#https://blog.naver.com/pmw9440/222296565910

 

7.54.1 R에서 실루엣 분석(Silhouette Analysis) 실시하기

0. 차례 1. 들어가기 2. 실루엣 계수(Sihouette Coefficient) 구하기 3. R에서 실루엣 분석실시하기 : c...

blog.naver.com

data <- iris[,-5] #명목형 제거
k_Result<- kmeans(data, centers = 3) #군집수 3개인 k-means 분석 실시
k_Result$cluster
distance <- dist(data, method= "euclidean")
(sil = silhouette (k_Result$cluster, distance))
plot(sil)
#전체 실루엣 계수 평균 구하는 함수 정의
avg_sil <- function(k, data) {
  km.res <- kmeans(data, centers = k)
  ss <- silhouette(km.res$cluster, dist(data))
  avgSil <- mean(ss[, 3])
  return(avgSil)
}
#테스트할 군집수
kClusters <-  2:10 

#군집수에 따른 전체 실루엣 계수 결과 저장 변수 생성
resultForEachK <- data.frame(k = kClusters, silAvg = rep(NA, length(kClusters))) 

#전체 실루엣 계수 평균 결과 계산
for(i in 1:length(kClusters))
{
  resultForEachK$silAvg[i] <- avg_sil(kClusters[i], data)
}

#결과 그래프로 그리기 
plot(resultForEachK$k, resultForEachK$silAvg,
     type = "b", pch = 19, frame = FALSE, 
     xlab = "Number of clusters K",
     ylab = "Average Silhouettes")
#군집수에 따른 평균 실루엣 계수 그래프
library(factoextra)
fviz_nbclust(data, kmeans, method = "silhouette")

 

 

k-평균 군집분석

https://youtu.be/uW9Zbhh1Dww