2014-10-27 130 views
1

我有一個documentTermMatrix看起來如下:R:羣集文件

 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。是否有可能做到這一點?

+1

如果您包含可重複的示例,則此問題將更容易回答,並且對其他人更有用。請參閱https://stackoverflow.com/help/how-to-ask和http://stackoverflow.com/q/5963269/134830 – 2014-10-27 10:10:50

回答

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 

然後從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 

所以文件第一和第二落入一個組,而第三和第四 - 另一組。