R:聚类文档

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

我有一个文档TermMatrix,如下所示:

      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包中,可以计算两个文档之间的汉明距离。但现在我想对所有汉明距离小于 3 的文档进行聚类。 所以在这里我希望簇 1 是文档 1 和 2,簇 2 是文档 3 和 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

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

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

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

关于R:聚类文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584797/

相关文章:

r - 防止 ggplotly 从图例中删除未使用的因子水平

r - 单击 ActionButton 并稍后在 Shiny 中引入用户输入后,ActionButton 无法正常工作

r - 不同年份具有不同颜色的图 - R

python - python for循环和3D numpy矩阵加法之间的等价

c++ - 在 C++ 中使用模板进行矩阵乘法

python - 如何计算文档与每个质心之间的距离(k-means)?

r - 不要在 data.table 中使用 by=2 col 删除空级别

machine-learning - K-均值 : Only two optimal clusters

algorithm - 将 3D 矩阵中的数据与另一个矩阵聚类

r - 在 Shiny Server 中识别用户 Web 浏览器信息