【问题标题】:R: Mahalanobis implementation in cmeans [e1071]R:在 cmeans 中实现 Mahalanobis [e1071]
【发布时间】:2014-11-23 22:47:44
【问题描述】:

我只是想知道 cmeans 函数 [在 e1071 包中] 是否有一种方法可以使用马氏距离执行聚类?

非常感谢

【问题讨论】:

  • 您有答案还是在寻找其他答案?
  • 非常感谢您的及时回复。我曾尝试在 fanny 函数中使用 mahalanobis dist。但是,我不确定这两个函数是否对数据执行类似的 custering,以及 fanny 中的成员指数和 cmeans 中的 m 模糊化之间有什么区别。干杯

标签: r fuzzy-c-means


【解决方案1】:

e1071 包没有 mahalanobis 选项。但是,您可以查看 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

虽然不完全一致,但可以看到非常接近。您还会注意到,fanny 正在指定平方欧几里得距离,这就是 cmeans 正在做的事情。这种等效性在 fanny 帮助页面 ?fanny 的度量下注明。

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2012-06-16
    • 2013-01-02
    • 2015-02-20
    • 1970-01-01
    • 2011-11-15
    • 2014-01-09
    • 2019-01-21
    • 2012-01-07
    相关资源
    最近更新 更多