【问题标题】:exporting clustering result from R to matlab将聚类结果从 R 导出到 matlab
【发布时间】:2014-06-16 14:15:07
【问题描述】:

我在 R 上运行了一个聚类算法:

hc <- hclust(dist(data),method=”complete”)

我想将此结果导出到 matlab(如链接的结果)以计算不一致。有可能吗?

【问题讨论】:

  • matlab不是也已经有层次聚类了吗?

标签: r matlab cluster-analysis


【解决方案1】:

根据hclust 的文档,hc$merge 给出了用于创建集群的索引,hc$height 给出了索引之间的距离。

以 USArrests 作为样本数据集:

hc<- hclust(dist(USArrests), method="complete")

data.mat<-data.matrix(data.frame(hc$merge,hc$height))
> head(data.mat)
      X1  X2 hc.height
[1,] -15 -29  2.291288
[2,] -17 -26  3.834058
[3,] -14 -16  3.929377
[4,] -13 -32  6.236986
[5,] -35 -44  6.637771
[6,] -36 -46  7.355270)

write.csv(data.mat,"data_mat.csv",col.names=FALSE,row.names=FALSE)

在matlab中将数据读入说矩阵Z后,以下将给出链接的不一致

incons.Z = inconsistent(Z)

您可以使用 scale 函数计算 R 中的不一致性,该函数从当前观察值中减去所有观察值的 mean 并将其除以 std。偏差 (sd) 即对其进行归一化。

inconsis_scale<-as.vector(scale(data.mat[,3]))

或者,使用函数meansd

inconsis_base<-(data.mat[,3]-mean(data.mat[,3]))/sd(data.mat[,3])

这两种方法产生相同的结果,可以通过以下方式确认

> all.equal(inconsis_scale,inconsis_base)
[1] TRUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-10-20
    • 2017-07-24
    相关资源
    最近更新 更多