k 均值和 elbow 方法为相同的数据和相同的中心生成不同的图形。
k means and elbow method produces different graph for same data and same center.
我正在尝试从 eblow 图中找到最佳簇大小。
问题是每次我 运行 它产生不同图形的代码。
par(mfrow=c(2,2))
for(i in 1:4){
data <- read.csv(file = "C:/Users/sd0298/Desktop/data.csv", header = TRUE)
wss <- (nrow(data)-1)*sum(apply(data,2,var))
for (i in 2:15) {
wss[i] <- sum(kmeans(data, centers=i, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)$withinss)
}
plot(1:15, wss, type="b", xlab="Number of Clusters", ylab="Within groups sum of squares", main="SSE vs Cluster levels",cex.axis = 0.8)
}
此外,每次当我尝试为同一中心绘制集群并使用相同的数据时,它都会产生不同的图形。
par(mfrow=c(2,2))
for(i in 1:4){
data <- read.csv(file = "C:/Users/sd0298/Desktop/data.csv", header = TRUE)
wss <- (nrow(data)-1)*sum(apply(data,2,var))
km <- kmeans(data, centers=4, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)
clusplot(data, km$cluster, color=TRUE, shade=T, span=T, col.p = c("#666666"), lines=0 ,plotchar=F, sub = "" ,main = "", labels=5)
}
任何人都可以告诉我出了什么问题,并告诉我如何在中心和数据没有改变的情况下重现同一个集群。
您正在对 R
kmeans()
函数进行以下调用:
km <- kmeans(data, centers=4, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)
Wikipedia page for Lloyd's k-means algorithm 声明如下:
Lloyd's algorithm starts by an initial placement of some number k of point sites in the input domain. In mesh smoothing applications, these would be the vertices of the mesh to be smoothed; in other applications they may be placed at random, or by intersecting a uniform triangular mesh of the appropriate size with the input domain.
R 的 kmeans
使用随机初始条件。 nstart
参数控制尝试随机初始化的次数。换句话说,如果您 运行 Lloyd 算法多次,您得到的聚类可能不会完全相同。
但是,您可以将这种不确定性行为视为验证集群准确性的机会。如果你 运行 Lloyd's 好几次,并且你不断得到相似的集群,那么这就意味着这些集群是有意义的。 如果运行多次使用k-means得到非常不同的结果,表明它们不可靠。
我正在尝试从 eblow 图中找到最佳簇大小。 问题是每次我 运行 它产生不同图形的代码。
par(mfrow=c(2,2))
for(i in 1:4){
data <- read.csv(file = "C:/Users/sd0298/Desktop/data.csv", header = TRUE)
wss <- (nrow(data)-1)*sum(apply(data,2,var))
for (i in 2:15) {
wss[i] <- sum(kmeans(data, centers=i, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)$withinss)
}
plot(1:15, wss, type="b", xlab="Number of Clusters", ylab="Within groups sum of squares", main="SSE vs Cluster levels",cex.axis = 0.8)
}
par(mfrow=c(2,2))
for(i in 1:4){
data <- read.csv(file = "C:/Users/sd0298/Desktop/data.csv", header = TRUE)
wss <- (nrow(data)-1)*sum(apply(data,2,var))
km <- kmeans(data, centers=4, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)
clusplot(data, km$cluster, color=TRUE, shade=T, span=T, col.p = c("#666666"), lines=0 ,plotchar=F, sub = "" ,main = "", labels=5)
}
任何人都可以告诉我出了什么问题,并告诉我如何在中心和数据没有改变的情况下重现同一个集群。
您正在对 R
kmeans()
函数进行以下调用:
km <- kmeans(data, centers=4, iter.max = 500, nstart = 1, algorithm = "Lloyd" , trace = TRUE)
Wikipedia page for Lloyd's k-means algorithm 声明如下:
Lloyd's algorithm starts by an initial placement of some number k of point sites in the input domain. In mesh smoothing applications, these would be the vertices of the mesh to be smoothed; in other applications they may be placed at random, or by intersecting a uniform triangular mesh of the appropriate size with the input domain.
R 的 kmeans
使用随机初始条件。 nstart
参数控制尝试随机初始化的次数。换句话说,如果您 运行 Lloyd 算法多次,您得到的聚类可能不会完全相同。
但是,您可以将这种不确定性行为视为验证集群准确性的机会。如果你 运行 Lloyd's 好几次,并且你不断得到相似的集群,那么这就意味着这些集群是有意义的。 如果运行多次使用k-means得到非常不同的结果,表明它们不可靠。