WEKA分层聚类输出 - 叶识别模糊

时间:2017-05-14 22:23:31

标签: java c# weka graph-theory ikvm

从WEKA调用Hierarchical集群时(我使用的是来自C#的IKVM,但我不相信它很重要,答案可以是任何一种语言),有一个选项可以生成Newick格式的树形图,但是当我试图解析它时,我需要识别叶子并将每个叶子链接到输入中的一个数据(向量)。

例如,输入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输出中添加一个额外的唯一属性以更好的方式识别基准?

1 个答案:

答案 0 :(得分:0)

找到解决方案,它可能不适用于所有距离函数,但它适用于Weka Hierarchical Clustering的默认配置: 解决方案只是在最后添加一个额外的字符串属性,这似乎在所有计算中都被忽略,这可以包含行或向量的唯一标识,这将由WEKA用于输出最终图形(Newick树形图)

示例ARFF:

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

这将导致以下Newick:

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

当忽略最后一个属性时,这将产生完全相同的聚类,但叶子的命名不同:

query ="SELECT save_directory FROM user_cats WHERE\
uploader='"+uploader+"' AND playlists LIKE '%"+playlist+"%'"
c.execute(query)
all_rows = c.fetchall()
print('1):', all_rows)

这是不明确的。