?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
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-평균 군집분석
'ADP (R)' 카테고리의 다른 글
오늘의 ADP 준비 / 2022-07-26 화(D61) (0) | 2022.07.26 |
---|---|
[ADP 실기 대비 연습 문제] 조건부 확률 문제 모음 (0) | 2022.07.25 |
오늘의 ADP 준비 / 2022-07-20 수(D67) (0) | 2022.07.20 |
[R 연습 문제] tapply 코드를 purrr::map 으로 변환하기 (0) | 2022.07.20 |
오늘의 ADP 준비 / 2022-07-19 화(D68) (0) | 2022.07.19 |