这可能是一个相当深奥的问题。R有效索引匹配元素,集群评估
我试图实施一些关于空间聚类算法的Albatineh et al(2006)(DOI:10.1007/s00357-006-0017-z)的想法。基本思想是评估聚类结果稳定性的一种方法是检查观察对在相同类中的结果。在一个明确的解决方案中,观察对通常应该在同一组中结束。
挑战在于,在一个大型数据集中有n^2个可能的配对(并且大多数不会发生)。我们的输出结构如下:
A B C C A
B A A A B
A B C C A
其中列索引是观察ID,每行表示聚类算法的运行。在这个例子中有5个观测值,算法运行了3次。群集标签A:C在运行之间基本上是任意的。我想一个有效的方式来计算是这样的:
ID1 ID2
1 5
2
3 4
4 3
5 1
1 2
2 3
2 4
...
这实现了我的目标,但超慢,尤其是对大型数据帧:
testData <- matrix(data=sample(x=c("A", "B", "C"), 15, replace=TRUE), nrow=3)
cluPr <- function(pr.obs){
pairs <- data.frame()
for (row in 1:dim(pr.obs)[1]){
for (ob in 1:dim(pr.obs)[2]){
ob.pairs <- which(pr.obs[row,] %in% pr.obs[row,ob], arr.ind=TRUE)
pairs <- rbind(pairs, cbind(ob, ob.pairs))
}
}
return(pairs)
}
cluPr(testData)
也许是因为,我不是一个集群精通,但在这里重读OP很多次,我不明白你在问什么。我很困惑。 – agstudy
我已经添加了一些代码来澄清。 – GeoSS
嗨@GeoSS,如果您认为您的问题得到满意的回答,您能否考虑接受以下答案之一? :-) –