R:集群文档

时间:2014-10-27 09:49:32

标签: r cluster-analysis hamming-distance term-document-matrix

我有一个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.是否有可能这样做?

1 个答案:

答案 0 :(得分:2)

我将您的表格保存到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

hclust

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

table(groups, rownames(myData))

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

所以第一和第二文件分为一组而第三组和第四组 - 另一组。