可视化和群集

时间:2010-07-14 20:42:31

标签: python cluster-analysis visualization

之前我发布了一个关于可视化和群集的问题。我想我的问题不够清楚,所以我再次发布。我希望这次能做出更好的解释。我也为我的旧问题“不接受回答”而道歉。我不知道我能做到这一点,直到一个人指出它。从现在开始我一定会这样做。

好。回到问题。以前我写过一个python脚本来计算文档之间的相似性。现在我将所有数据写入记事本,它看起来像这样:

(1, 6821): inf

(1, 8): 3.458911570

(1, 9): 7.448105193

(1, 10): inf

(1, 11): inf

(6821, 8): inf

(6821, 9): inf

(6821, 10): inf

(6821, 11): inf

(8, 9): 2.153308936

(8, 10): inf

(8, 11): 16.227647992

(9, 10): inf

(9, 11): 34.943139430

(10, 11): inf

括号中的数字代表文件编号。而它之后的值是两个文档之间的距离。我想要的实际上是可视化工具或方法,我可以创建代表每个文档编号的节点。例如,我有6个不同的文件。所以我希望创建6个不同的节点来代表我的文档编号。然后,我想要根据它们的距离将这些节点连接在一起的边缘。例如,文档1和8之间的距离是3.46,而文档1和9之间的距离是7.45。所以,1& 8需要比1和1更近的聚类。 9.虽然与'inf'距离的文档对不应该有任何连接或边缘将它们连接在一起。

这听起来很简单,但我很难找到一个有效帮助我执行此操作的开源可视化工具。我感谢任何建议。

3 个答案:

答案 0 :(得分:2)

你试过GraphViz吗?我在这种情况下使用它。我没有尝试改变节点连接的长度,你必须取笑那个。查看list of example graphs作为起点。

答案 1 :(得分:1)

http://www.graphviz.org/

特别是neato包:

$ cat similar.dot
graph g {
   n1 -- n8 [ weight = 3.458911570 ];
   n1 -- n9 [ weight = 7.448105193 ];
   n8 -- n9 [ weight = 2.153308936 ];
   n8 -- n11 [ weight = 16.227647992 ];
   n9 -- n11 [ weight = 34.943139430 ];
   n10;
   n6821;
}
$ neato -Tpng similar.dot -o similar.png

http://img534.imageshack.us/img534/4189/similar.png

答案 2 :(得分:0)

Processing是一个非常可爱的数据可视化工具(以及基于Java的语言)。可以把它想象成用Java编写简化的OpenGL(你甚至可以用它来使用它),以及使用所有Java库的自由。您甚至可以将Processing应用程序嵌入到另一个Swing或AWT应用程序中。

以下是main page和全新wiki

你说你用的是Pyton。有一个hack,所以你可以在this blog post中使用Jython而不是Java。我没试过,但也许它工作正常。使用另一种语言的唯一不足(还有一个JavaScript'端口',Processing.js)是所有的例子都是处理语言(基于Java)。