2014-04-30 23 views
-1

我跑R上的聚類算法:出口聚類結果MATLAB的

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

我想,以計算insconsistency導出這個結果MATLAB(如聯動的結果)。可能嗎?

+0

確認尚不matlab的相同的結果有聚類,太? –

回答

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) 

OR

不一致您可以使用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