将聚类结果从R导出到matlab

时间:2014-04-30 09:57:03

标签: r matlab cluster-analysis

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

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

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

1 个答案:

答案 0 :(得分:3)

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