2014-01-11 37 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来预测新点应属于哪个类。