2010-07-14 7 views
1

Plus tôt, j'ai posté une question sur la visualisation et le clustering. Je suppose que ma question n'était pas assez claire alors je la poste à nouveau. J'espère que je ferai une meilleure explication cette fois. Je m'excuse également de ne pas "accepter la réponse" pour mes anciennes questions. Je ne savais pas que je peux le faire jusqu'à ce qu'un gars le fasse remarquer. Je vais certainement le faire à partir de maintenant.Visualiser et regrouper

OK. Retour à la question Auparavant, j'ai écrit un script python pour calculer la similarité entre les documents. Maintenant, j'ai tout écriture de données pour le bloc-notes et il ressemble à ceci:

(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 

Le nombre entre parenthèses représente le nombre de documents. Et la valeur après, c'est la distance entre les deux documents. Ce que je veux est en fait des outils de visualisation ou une méthode que je peux créer des noeuds qui représentent chaque numéro de documents. Par exemple ici, j'ai 6 documents différents. Je souhaite donc créer 6 nœuds différents représentant les numéros de mes documents. Ensuite, je veux avoir des bords qui relient ces nœuds ensemble en fonction de leurs distances. Par exemple, la distance entre les documents 1 et 8 est de 3,46 tandis que la distance entre les documents 1 et 9 est de 7,45. Donc, 1 & 8 doit être plus proche de 1 & 9. Alors que les paires de documents avec la distance 'inf' ne devraient pas avoir de connexion ou de bord les reliant ensemble.

Cela semble facile, mais j'ai vraiment du mal à trouver un outil de visualisation open source qui peut effectivement m'aider à effectuer cela. J'apprécie toute suggestion de suggestion.

+2

Bonjour, @Jacky. Vous ne devriez pas poster des questions parce que l'original n'est pas clair - en général, il est préférable de modifier la question d'origine (http://stackoverflow.com/questions/3240658/visualize-data-and-clustering) –

Répondre

1

http://www.graphviz.org/

En particulier, le paquet 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

+0

Merci! C'est presque exactement ce que je veux que la mise en page soit. Je l'ai déjà essayé et ça fonctionne parfaitement. – Jacky

2

Avez-vous essayé GraphViz? Je l'utilise pour des situations comme celle-ci. Je n'ai pas essayé d'altérer la longueur des connexions de nœuds, vous devrez l'excuser. Consultez le list of example graphs comme point de départ.

0

Le traitement est un outil très agréable pour la visualisation de données (et aussi le langage, basé sur Java). Pensez-y comme l'écriture simplifiée OpenGL (vous pouvez même utiliser OpenGL avec si vous le souhaitez) en Java, plus la liberté d'utiliser toutes les bibliothèques Java. Vous pouvez même intégrer votre application de traitement dans une autre application Swing ou AWT.

Voici le main page, et le tout nouveau wiki.

Vous avez dit que vous utilisiez Pyton. Il y a un hack pour que vous puissiez utiliser Jython au lieu de Java dans this blog post. Je n'ai pas essayé mais peut-être que ça fonctionne bien. Le seul manque dans l'utilisation d'un autre languageh (il y a aussi un 'port' JavaScript, Processing.js) est que tous les exemples sont pour le langage de traitement (basé sur Java).

Questions connexes