确定最佳簇数并使用Daisy函数和Gower相似度

时间:2013-08-01 18:45:23

标签: r cluster-computing r-daisy

我试图将250种物种的行为特征聚集到生活史策略中。特征数据包括数值和名义变量。我对R和聚类分析相对较新,但我认为找到这些点的距离的最佳选择是在菊花函数中使用gower相似性方法。 1)这是最好的方法吗?

一旦我有这些距离,我想找到重要的集群。我已经研究过pvclust并且喜欢它能够给我集群的力量。但是,我无法修改代码以接受先前使用菊花进行的距离测量。我未能成功地按照此处提供的建议https://stats.stackexchange.com/questions/10347/making-a-heatmap-with-a-precomputed-distance-matrix-and-data-matrix-in-r/10349#10349并使用此处获取的代码http://www.is.titech.ac.jp/~shimo/prog/pvclust/pvclust_unofficial_090824/pvclust.R

2)任何人都可以帮我修改现有代码以接受我的距离测量吗?

3)或者,还有另一种更好的方法来确定重要集群的数量吗?

我事先感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

一些评论......

关于1)

这是处理不同类型数据的好方法。

您还可以在数据集中创建尽可能多的新行,并将1/0放在需要的位置。例如,如果有3个名义值,例如“爬行动物”,“哺乳动物”和“鸟”,您可以更改具有2列的初始数据集(数字,标称值)  对于一个有4列的新人(数字,数字(代表爬行动物),数字(代表哺乳动物),数字(代表鸟))一个实例(23.4,“哺乳动物”)将被映射到(23.4,0,1,0)

使用此映射,您可以使用“正常”距离(确保标准化数据,以便由于它的大/小值而没有列支配其他列。)

关于2)

daisy返回类型不相似的元素,您可以在集群包中的其他聚类算法中使用它(也许您不必实现更多的东西)。例如,函数pam可以直接获取daisy返回的对象。

关于3)

群集确实是主观的,大多数群集算法都依赖于初始条件,因此“重要群集”实际上并不是某些人不习惯使用的术语。 Pam在你的情况下可能是有用的,因为簇使用medoids来居中,这对于名义数据是有益的(因为它是可解释的)。例如K-means的缺点是质心不可解释(它是什么意思1/2爬行动物1/2哺乳动物?)pam构建了以实例为中心的聚类,这对于解释目的来说很好。

关于pam:

http://en.wikipedia.org/wiki/K-medoids

http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/pam.html

答案 1 :(得分:0)

您可以使用Zahn算法查找群集。基本上它是最小生成树和删除最长边的功能。