繁体   English   中英

R:在cmeans中实施Mahalanobis [e1071]

[英]R: Mahalanobis implementation in cmeans [e1071]

我只是想知道cmeans函数(在软件包e1071中)是否有一种方法可以使用马氏距离进行聚类?

非常感谢

e1071软件包没有马哈拉诺比斯选项。 但是,您可以查看cluster软件包和fanny函数。 根据帮助页面,它还会将数据模糊聚类到k个聚类中。 使用此功能,您可以提供自己的距离矩阵。

因此,对于马哈拉诺比斯距离,您可以使用dist计算距离矩阵,然后运行聚类。

require(cluster)
set.seed(123)
x<-rbind(matrix(rnorm(100,sd=0.3),ncol=2),
         matrix(rnorm(100,mean=1,sd=0.3),ncol=2))
y <- dist(x, "mahalanobis")
fanny(y, k=2)

鉴于您对函数之间的等效性存在可理解的担忧,下面是一个比较它们的示例:

require(e1071)
cl<-cmeans(x,centers=2,iter.max=20,dist="euclidean",method="cmeans",m=2)
fl <- fanny(x, k=2, maxit=20, metric="SqEuclidean", memb.exp=2)

> head(cl$membership)
             1           2
[1,] 0.9948729 0.005127121
[2,] 0.3647778 0.635222221
[3,] 0.9290126 0.070987385
[4,] 0.7588260 0.241174043
[5,] 0.9282550 0.071745007
[6,] 0.9599231 0.040076886
> head(fl$membership)
          [,1]        [,2]
[1,] 0.9948722 0.005127775
[2,] 0.3647890 0.635211040
[3,] 0.9290171 0.070982905
[4,] 0.7588304 0.241169649
[5,] 0.9282575 0.071742489
[6,] 0.9599221 0.040077878

尽管不完全相同,但您可以看到它们之间非常接近。 您还将注意到,范妮指定欧几里得距离的平方,这就是cmeans所做的。 这等价指出的腰包帮助页面?fanny下的度量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM