2017-05-14 28 views
0

WEKAから階層型クラスタリングを呼び出すとき(私はC#のIKVMを使用していますが、重要ではないと考えていますが、どちらの言語でも答えが可能です)、生成するオプションがありますNewick形式の樹形図ですが、それを解析しようとすると、葉を識別し、各葉を入力内の1つのデータム(ベクトル)にリンクする必要があります。WEKA階層型クラスタリング出力 - リーフ識別の曖昧さ

@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のフォーマットで、次の系統樹になるだろう:例えば、入力arffがある

ポイントが識別されているかは明らかでない場合

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

を(最初の分岐ました2番と3番ですが、2番のブランチには1と1がありますが、どれがどちらかであるかは不明です)。

この出力がどのように表現されるかを変更する方法、またはNewickの出力でより良い方法でデータムを識別する特別な属性を追加する方法はありますか?

+0

私はアウトプットを誤解していると感じています。私がいれば教えてください。アウトプットはそれぞれのポイントを表すのではなく、特定のy –

答えて

0

解決策が見つかりました。すべての距離関数では機能しないかもしれませんが、Weka階層的クラスタリングのデフォルト設定で動作します。 解決策は最後に余分な文字列属性を追加することですすべての計算では、行またはベクトルの一意のIDを含むことができます。これは、WEKAによって最終グラフ(Newick dendrogram)を出力するために使用されます。

例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) 

どちらがあいまいですか。