可视化与聚类
之前我在这里问过一个关于可视化和聚类的问题。我觉得我之前的问题不够清楚,所以我再发一次。希望这次我能解释得更好。同时,我也为之前没有“接受答案”而道歉,直到有人提醒我我才知道可以这样做。从现在开始我一定会做到的。
好了,回到问题上。之前我写了一个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和9更靠近。而距离为'inf'的文档对之间不应该有任何连接。
这听起来很简单,但我真的很难找到一个开源的可视化工具,能够有效地帮助我完成这个任务。任何建议或推荐我都非常感激。
3 个回答
Processing 是一个非常好用的数据可视化工具(也是一种基于 Java 的编程语言)。你可以把它想象成是在 Java 中写简化版的 OpenGL(如果你想的话,还可以用 OpenGL)。而且你可以自由使用所有的 Java 库。你甚至可以把你的 Processing 应用嵌入到其他的 Swing 或 AWT 应用程序中。
你提到你用过 Python。这里有一个方法可以让你在 这篇博客中使用 Jython,而不是 Java。我还没试过,但可能效果不错。使用其他语言的唯一缺点是,所有的示例都是针对 Processing 语言(基于 Java)的(还有一个 JavaScript 的版本,Processing.js)。
特别是,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