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, можно рассчитать расстояние Хэмминга между 2 документов. Но теперь я хочу сгруппировать все документы, у которых расстояние от помех меньше 3. Итак, здесь я хотел бы, чтобы этот кластер 1 был документом 1 и 2, а этот кластер 2 был документом 3 и 4. Есть ли возможность сделать это ?

+1

Этот вопрос будет легче ответить и более полезен другим, если вы включите воспроизводимый пример. См. Https://stackoverflow.com/help/how-to-ask и http://stackoverflow.com/q/5963269/134830 –

ответ

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 

Так документы первого и второго попадают в одну группу, а третья и четвёртая - к другой группе.

Смежные вопросы