什么是聚类二进制矩阵的适当方法

时间:2018-05-29 08:53:58

标签: cluster-computing cluster-analysis binary-matrix

我是聚类的初学者,我有一个二进制矩阵,其中每个学生都有他们注册的会话。我想聚集具有相同会话的学生。

聚类方法如此之多,并根据数据集

而变化

例如k-means是不合适的,因为数据是二进制的,标准的“mean”操作对二进制没有多大意义。

我愿意接受任何建议

以下是一个例子:

+------------+---------+--------+--------+
|  session1  | session2|session3|session4|
+------------+---------+--------+--------+
|     1      |    0    |   1    |    0   |
|     0      |    1    |   0    |    1   |
|     1      |    0    |   1    |    0   | 
|     0      |    1    |   0    |    1   |
+------------+---------+--------+--------+

结果:

clusterA = [user1,user3]

clusterB = [user2,user4]

1 个答案:

答案 0 :(得分:0)

您可以为每对点使用Jaccard距离。

在R:

# create data table
mat = data.frame(s1 = c(T,F,T,F), s2 = c(F,T,F,T), 
                 s3 = c(T,F,T,F), s4 = c(F,T,F,T))

结果:

     s1    s2    s3    s4
1  TRUE FALSE  TRUE FALSE
2 FALSE  TRUE FALSE  TRUE
3  TRUE FALSE  TRUE FALSE
4 FALSE  TRUE FALSE  TRUE

 dist(mat, method="binary") # jaccard distance

结果:

  1 2 3
2 1    
3 0 1  
4 1 0 1

第3行与第4行的距离为1。 偶然,距离在这里都是1和0。这些实际上是漂浮物。 (您的玩具数据集可能过于简单了)

集群他们:

hclust(dist(mat, method="binary"))

结果(没有提供信息):

Call:
hclust(d = dist(mat, method = "binary"))

Cluster method   : complete 
Distance         : binary 
Number of objects: 4 

创建树状图

plot(hclust(dist(mat, method="binary")))

dendrogram