Cluster computing 对二进制矩阵进行聚类的合适方法是什么

Cluster computing 对二进制矩阵进行聚类的合适方法是什么,cluster-computing,cluster-analysis,binary-matrix,Cluster Computing,Cluster Analysis,Binary Matrix,我是集群的初学者,我有一个二进制矩阵,每个学生都有他们注册的课程。我想把学生分成相同的小组 聚类方法很多,并且根据数据集的不同而不同 例如,k-means是不合适的,因为数据是二进制的,标准的“means”操作对二进制没有多大意义 我愿意接受任何建议 下面是一个例子: +------------+---------+--------+--------+ | session1 | session2|session3|session4| +------------+---------+-----

我是集群的初学者,我有一个二进制矩阵,每个学生都有他们注册的课程。我想把学生分成相同的小组

聚类方法很多,并且根据数据集的不同而不同

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

我愿意接受任何建议

下面是一个例子:

+------------+---------+--------+--------+
|  session1  | session2|session3|session4|
+------------+---------+--------+--------+
|     1      |    0    |   1    |    0   |
|     0      |    1    |   0    |    1   |
|     1      |    0    |   1    |    0   | 
|     0      |    1    |   0    |    1   |
+------------+---------+--------+--------+
结果:

     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
clusterA=[user1,user3]


clusterB=[user2,user4]

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

在R中:

结果:

     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
结果:

     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"))
结果(信息量不大):

创建树状图

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

是否有一种方法可以通过java(IntelliJ)实现这一点,您可以尝试导入。Weka还实现了这些聚类方法。但我建议先学习Weka GUI(“浏览器”)。在资源管理器中,只需单击一个按钮,就可以生成一些所需的java源代码。