R 一致K-均值聚类结果

R 一致K-均值聚类结果,r,R,我读过 但这并不能解决我的问题。我正在对大小不同(大小增加)的数据进行采样。我需要使用k-means对数据进行聚类,但我遇到的问题是,每个样本的聚类都不同。需要注意的重要一点是,我的t+1示例将始终包含tth示例中的所有组件。所以它慢慢地变得越来越大。我需要的是一种使集群保持不变的方法。除了使用set.seeds,还有其他解决方法吗?我对任何解决方案都持开放态度。我能想到的实现这一点的最佳方法是首先使用k-均值对数据进行聚类,然后简单地将所有附加数据分配给最近的集群(设置随机种子将不会帮助您使新

我读过


但这并不能解决我的问题。我正在对大小不同(大小增加)的数据进行采样。我需要使用k-means对数据进行聚类,但我遇到的问题是,每个样本的聚类都不同。需要注意的重要一点是,我的
t+1
示例将始终包含
t
th示例中的所有组件。所以它慢慢地变得越来越大。我需要的是一种使集群保持不变的方法。除了使用
set.seeds
,还有其他解决方法吗?我对任何解决方案都持开放态度。

我能想到的实现这一点的最佳方法是首先使用k-均值对数据进行聚类,然后简单地将所有附加数据分配给最近的集群(设置随机种子将不会帮助您使新集群嵌套在原始集群中)。如回答中所述,
flexclust
软件包使这项工作变得非常简单:

# Split into "init" (used for initial clustering) and "later" (assigned later)
set.seed(100)
spl <- sample(nrow(iris), 0.5*nrow(iris))
init <- iris[spl,-5]
later <- iris[-spl,-5]

# Build the initial k-means clusters with "init"
library(flexclust)
(km <- kcca(init, k=3, kccaFamily("kmeans")))
# kcca object of family ‘kmeans’ 
# 
# call:
# kcca(x = init, k = 3, family = kccaFamily("kmeans"))
# 
# cluster sizes:
# 
#  1  2  3 
# 31 25 19 

# Assign each element of "later" to the closest cluster
head(predict(km, newdata=later))
#  2  5  7  9 14 18 
#  2  2  2  2  2  2 
#分为“init”(用于初始集群)和“later”(稍后分配)
种子集(100)

值得注意的是,这是k-均值,后面是k-最近邻。一个警告是,如果目标是迭代地将新数据点分配给集群,那么在每个添加的数据点之后重新计算质心可能更有意义。看起来不像这样。@Jeff不,这不会重新计算质心。然而,重新计算质心,然后迭代地将点重新分配到最近的簇不是OP想要的,因为OP想要原始簇分配嵌套在最终簇内。@josliber啊,我的意思是重新计算质心。这太完美了!现在,看看是否有可能定期更新我的初始模型以合并新的数据点以保持其动态性,这将是非常棒的。。Thanks@user1234440这是我知道的将原始作业嵌套在新作业中的唯一方法。如果您愿意更改原始分配,那么为什么不重新运行k-means集群呢?