从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输出中添加一个额外的唯一属性以更好的方式识别基准?
答案 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)
这是不明确的。