Có, bạn có thể tìm số cụm tốt nhất bằng phương pháp Elbow, nhưng tôi thấy khó khăn khi tìm giá trị cụm từ biểu đồ khuỷu tay bằng cách sử dụng tập lệnh. Bạn có thể quan sát đồ thị khuỷu tay và tự tìm điểm khuỷu tay, nhưng có rất nhiều công việc tìm kiếm nó từ kịch bản.
Vì vậy, một tùy chọn khác là sử dụng Silhouette Method để tìm. Kết quả từ Silhouette hoàn toàn tuân thủ kết quả từ phương pháp Elbow.
Đây là những gì tôi đã làm.
#Dataset for Clustering
n = 150
g = 6
set.seed(g)
d <- data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))),
y = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))))
mydata<-d
#Plot 3X2 plots
attach(mtcars)
par(mfrow=c(3,2))
#Plot the original dataset
plot(mydata$x,mydata$y,main="Original Dataset")
#Scree plot to deterine the number of clusters
wss <- (nrow(mydata)-1)*sum(apply(mydata,2,var))
for (i in 2:15) {
wss[i] <- sum(kmeans(mydata,centers=i)$withinss)
}
plot(1:15, wss, type="b", xlab="Number of Clusters",ylab="Within groups sum of squares")
# Ward Hierarchical Clustering
d <- dist(mydata, method = "euclidean") # distance matrix
fit <- hclust(d, method="ward")
plot(fit) # display dendogram
groups <- cutree(fit, k=5) # cut tree into 5 clusters
# draw dendogram with red borders around the 5 clusters
rect.hclust(fit, k=5, border="red")
#Silhouette analysis for determining the number of clusters
library(fpc)
asw <- numeric(20)
for (k in 2:20)
asw[[k]] <- pam(mydata, k) $ silinfo $ avg.width
k.best <- which.max(asw)
cat("silhouette-optimal number of clusters:", k.best, "\n")
plot(pam(d, k.best))
# K-Means Cluster Analysis
fit <- kmeans(mydata,k.best)
mydata
# get cluster means
aggregate(mydata,by=list(fit$cluster),FUN=mean)
# append cluster assignment
mydata <- data.frame(mydata, clusterid=fit$cluster)
plot(mydata$x,mydata$y, col = fit$cluster, main="K-means Clustering results")
Hy vọng điều đó sẽ hữu ích !!
Từ bài viết wikipedia: "Đây "Tôi nghĩ rằng có một số chủ quan trong phương pháp này, mà làm cho một thực hiện khó khăn. – Roland
có thể trùng lặp của [Phân tích cụm trong R: xác định số lượng tối ưu của cụm] (http: // stackoverflow. com/questions/15376075/cluster-phân tích-in-r-xác định-số-tối ưu-số-cụm) –