2

我有一个如下所示的 documentTermMatrix:

      artikel naam product personeel loon verlof    
 doc 1    1       1    2        1        0    0     
 doc 2    1       1    1        0        0    0    
 doc 3    0       0    1        1        2    1   
 doc 4    0       0    0        1        1    1   

包装内tm中,可以计算 2 个文档之间的汉明距离。但是现在我想对所有汉明距离小于 3 的文档进行聚类。所以在这里我希望集群 1 是文档 1 和 2,而集群 2 是文档 3 和 4。有可能这样做吗?

4

1 回答 1

4

我将您的表格保存到myData

myData
     artikel naam product personeel loon verlof
doc1       1    1       2         1    0      0
doc2       1    1       1         0    0      0
doc3       0    0       1         1    2      1
doc4       0    0       0         1    1      1

然后使用库中hamming.distance()的函数e1071。您可以使用自己的距离(只要它们是矩阵形式)

lilbrary(e1071)
distMat <- hamming.distance(myData)

随后使用“完整”链接方法进行层次聚类,以确保稍后可以指定一个聚类内的最大距离。

dendrogram <- hclust(as.dist(distMat), method="complete")

根据组中点之间的最大距离选择组(最大值 = 5)

groups <- cutree(dendrogram, h=5)

最后绘制结果:

plot(dendrogram)  # main plot
points(c(-100, 100), c(5,5), col="red", type="l", lty=2)  # add cutting line
rect.hclust(dendrogram, h=5, border=c(1:length(unique(groups)))+1)  # draw rectangles

集群

查看每个文档的集群成员的另一种方法是table

table(groups, rownames(myData))

groups doc1 doc2 doc3 doc4
     1    1    1    0    0
     2    0    0    1    1

因此,第 1 份和第 2 份文件属于一组,而第 3 份和第 4 份文件属于另一组。

于 2014-10-27T11:30:11.750 回答