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