2014-01-11 76 views
4

我是新來的R,和我已經訓練有素使用hclust模型:聚類訓練數據後,如何預測新數據的聚類?

model=hclust(distances,method="ward」) 

而結果看起來不錯:

enter image description here

現在,我得到了一些新的數據記錄,我想要預測他們每個人屬於哪個集羣。我如何完成它?

+0

你所描述的聽起來更像是分類。例如,參見[package class]中的'knn(...)'函數(http://cran.r-project.org/web/packages/class/class.pdf)。 – jlhoward

+0

@MrROY你是怎麼用knn解決問題的?你有一個例子嗎? – loki

+0

這使用knn https://www.rdocumentation.org/packages/arules/versions/1.5-0/topics/predict – Chris

回答

6

正如名稱所示,羣集不應該對新數據進行「分類」 - 它是分類的核心概念。

某些聚類算法(如基於質心的kmeans,kmedians等)可以基於創建的模型「標記」新實例。不幸的是,層次聚類不是其中之一 - 它不會分割輸入空間,它只是「連接」聚類過程中給出的一些對象,因此您無法將新點指定給此模型。

使用hclust進行「分類」的唯一「解決方案」是在由hclust給出的標記數據之上創建另一個分類器。例如,您現在可以訓練knn(即使k = 1)數據與hclust標籤上的數據,並使用它將標籤分配給新點。

+0

偉大的'knn'值得嘗試。 – MrROY

-3

爲什麼不計算每個hclust簇的點的質心,然後使用相同的距離函數爲最近的點分配一個新點?

在課堂上knn將只看最近的n,只允許歐幾里德距離。

沒有必要運行分類器。

+1

,因爲分層聚類不會創建質心是定義良好的對象的聚類。在這種情況下,你是遠離真理的,在這種情況下需要分類器,1nn(上面提出的建議)是最簡單並且可能足夠的解決方案(它的代碼甚至比你的建議更簡單),它將起作用,而計算質心不會。 – lejlot

+0

上述方法對kmeans更有效。關於HCA,我不知道是否可以根據樹狀圖的結果採用樹分裂技術? – Chris

0

您可以使用此分類,然後使用LDA來預測新點應屬於哪個類。