在R中,是否存在用于创建大致相等大小的簇的算法

Gra*_*eme 5 r cluster-analysis

似乎有很多关于创建分层或k-means集群的信息.但我想知道在R中是否存在可以创建大小相等的K簇的解决方案.有一些关于在其他语言中这样做的东西,但我无法找到任何在互联网上搜索建议如何在R中实现结果的东西.

一个例子是

set.seed(123)
df <- matrix(rnorm(100*5), nrow=100)
km <- kmeans(df, 10)
print(sapply(1:10, function(n) sum(km$cluster==n)))
Run Code Online (Sandbox Code Playgroud)

结果

[1] 14 12  4 13 16  6  8  7 13  7
Run Code Online (Sandbox Code Playgroud)

我理想的是希望看到

[1] 10 10 10 10 10 10 10 10 10 10 
Run Code Online (Sandbox Code Playgroud)

DG1*_*DG1 -3

它并不完全清楚你在问什么,但在 R 中生成随机数据非常容易。如果你的数据集有二维,你可以这样做 -

cluster1 = data.frame(x = rnorm(100, mean=5,sd=1), y  = rnorm(100, mean=5,sd=1))
cluster2 = data.frame(x = rnorm(100, mean=15,sd=1), y  = rnorm(100, mean=15,sd=1))
Run Code Online (Sandbox Code Playgroud)

这会为每个簇中的 100 个数据点生成 x 和 y 上的正态分布随机数据。

然后查看它——

plot(cluster1, xlim = c(0,25), ylim = c(0,25))
lines(cluster2, type = "p")!
Run Code Online (Sandbox Code Playgroud)

  • 我认为你不知道什么是聚类分析。想象一下有 200 个点的数据,OP 需要一个过程将这些点标记为两个簇,每个簇有 100 个点。 (2认同)