可视化与聚类

1 投票
3 回答
1024 浏览
提问于 2025-04-16 01:18

之前我在这里问过一个关于可视化和聚类的问题。我觉得我之前的问题不够清楚,所以我再发一次。希望这次我能解释得更好。同时,我也为之前没有“接受答案”而道歉,直到有人提醒我我才知道可以这样做。从现在开始我一定会做到的。

好了,回到问题上。之前我写了一个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 个回答

0

Processing 是一个非常好用的数据可视化工具(也是一种基于 Java 的编程语言)。你可以把它想象成是在 Java 中写简化版的 OpenGL(如果你想的话,还可以用 OpenGL)。而且你可以自由使用所有的 Java 库。你甚至可以把你的 Processing 应用嵌入到其他的 Swing 或 AWT 应用程序中。

这是 主页面,还有全新的 维基页面

你提到你用过 Python。这里有一个方法可以让你在 这篇博客中使用 Jython,而不是 Java。我还没试过,但可能效果不错。使用其他语言的唯一缺点是,所有的示例都是针对 Processing 语言(基于 Java)的(还有一个 JavaScript 的版本,Processing.js)。

2

你试过 GraphViz 吗?我在遇到这种情况时会用它。我还没有尝试过改变节点连接的长度,你需要自己摸索一下。可以看看 示例图的列表,作为一个起点。

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

撰写回答