2017-05-14 61 views
0

當從WEKA調用分層聚類(我使用C#中的IKVM,但我不認爲它很重要,答案可以用任一種語言)時,有一個選項可以生成Newick格式的樹形圖,但是當試圖解析它時,我需要識別葉子並將每個葉子的假連接到輸入中的一個數據(矢量)。WEKA分層聚類輸出 - 葉識別模糊

例如,輸入ARFF是:

@RELATION points 


@ATTRIBUTE x REAL 
@ATTRIBUTE y REAL 

@DATA 
1.0,2.0 
3.0,1.0 
1.0,3.0 
2.0,1.0 

我會得到在Newick格式如下樹狀圖:

((2.0:1,3.0:1):1.49661,(1.0:1,1.0:1):1.49661) 

在哪裏並不清楚點是如何確定的(第一個分支有2和3,但第二個分支有1和1,但不清楚哪一個是哪個)。

有沒有辦法改變這個輸出的表現方式,或者在Newick輸出中以更好的方式添加額外的唯一屬性標識基準點?

+0

我覺得我誤解了輸出,請讓我知道如果我是,也許輸出不代表每個點,但代表具體的y –

回答

0

找到了解決方案,它可能不適用於所有的距離函數,但它可以與Weka Hierarchical Clustering的默認配置一起工作: 解決方案只是在最後添加一個額外的字符串屬性,這似乎被忽略所有的計算,這可以包含唯一的行或矢量標識,這將由WEKA用於輸出最終圖(Newick樹狀圖)。

例ARFF:

@RELATION points 

@ATTRIBUTE x REAL 
@ATTRIBUTE y REAL 
@ATTRIBUTE id STRING 

@DATA 
1,5,100 
2,6,200 
3,5,300 

這將導致以下Newick:

(((100:1.41421,200:1.41421):-0.05358,300:1.36064):0.441,400:1.80164) 

而忽略了最後一個屬性的時候,這將導致完全相同的集羣,但有不同的命名葉子:

(((5.0:1.41421,6.0:1.41421):-0.05358,5.0:1.36064):0.441,6.0:1.80164) 

這是不明確的。