Aperçu
Ces documents démontrent les capacités d'intégration Python introduites dans JMP 18. La démo se concentre sur l'analyse réseau d'un ensemble de données Facebook anonymisées avec le package NetworkX Python . Il s'agit d'un exemple d'exploration de données dans JMP et d'appel transparent à Python pour une analyse spécifique que JMP ne propose pas.
Le but de l'analyse est de quantifier l'importance de chaque nœud pour le réseau en calculant quatre mesures de centralité pour chaque nœud : degré , intermédiarité , vecteur propre et proximité . L'analyse renvoie un graphique de réseau et un tableau de données JMP des mesures de centralité. Les outils d'exploration de données de JMP peuvent être appliqués aux données du réseau avant l'analyse et/ou aux mesures de centralité produites par l'analyse.
L'exemple a été développé par Kyra Dalbo, stagiaire d'été JMP Academic 2024. Adressez vos questions ou demandes à @Ross_Metusalem .
Matériel de démonstration
Les données
L'ensemble de données provient du Stanford Network Analysis Project ; plus précisément, il s'agit du fichier facebook_combined.txt trouvé ici .
Les données sont constituées de « cercles » (ou « listes d'amis ») de connexions d'utilisateurs réels, avec 4 039 utilisateurs inclus et 88 234 bords ou connexions au total. Le réseau s'articule autour de plusieurs « nœuds du moi » : des nœuds focaux auxquels de nombreux autres nœuds sont connectés. Les nœuds non-ego sont également connectés les uns aux autres.
Chaque ligne représente une connexion. Par exemple, la ligne 1 montre que le nœud 0 est connecté au nœud 1. Notez que le script nécessite des ID de nœud numériques.
Les documents comprennent deux versions des données : l'ensemble de données complet de 88 234 connexions et un sous-ensemble de 37 655 connexions. Le sous-ensemble comprend les données de tous les nœuds dont les valeurs d'ID sont <= 2 000. Lors des tests, le sous-ensemble peut être analysé assez rapidement pour faire une démonstration en direct. L’ensemble complet des données peut prendre trop de temps pour une démonstration en direct.
Le script d'analyse
Le script d'analyse est fourni à la fois sous forme de script Python avec code JSL intégré et de script JSL avec code Python intégré. Le script JSL a également été intégré en tant que complément JMP pour démontrer une solution « sans code » à l'utilisateur final.
Chacun comprend une boîte de dialogue de lancement JMP interactive qui permet à l'utilisateur de spécifier les colonnes à analyser et laquelle des quatre mesures de centralité doit être calculée.
Chacun installe automatiquement tous les packages Python nécessaires.
Flux de démonstration
Dès le départ, envisagez une exploration rapide des données du réseau avant d’exécuter le script d’analyse. Par exemple, vous pouvez empiler les deux colonnes de nœuds et utiliser Distribution, Graph Builder ou Tabulate sur les données empilées pour quantifier le nombre de connexions de chaque nœud. Cela correspond au degré de centralité du nœud.
Ensuite, vous pouvez exécuter l'analyse du réseau et utiliser JMP pour explorer les mesures de centralité. Par exemple, utilisez Graph Builder pour tracer l’intermédiarité par degré et identifier plusieurs nœuds qui ont un degré faible mais une intermédiarité relativement élevée. Ces nœuds ont peu de connexions mais servent néanmoins de connexions cruciales entre de nombreuses autres paires de nœuds. Ces nœuds de faible degré, situés entre les deux, sont visibles dans le graphique sous la forme de gros points de couleur sombre.
Voir la vidéo ci-jointe pour un exemple de démo. Notez que la vidéo présente une démo spécifiquement destinée aux professeurs de statistiques universitaires – la démo a été développée pour l’équipe académique – mais ne devrait pas être difficile à adapter aux clients commerciaux.
Notes techniques
- Version minimale de JMP : 18.
- Packages Python requis : jmp, jmputils, networkx, matplotlib, pandas, numpy, scipy, os, tempfile.
- Le code fonctionne sur la table de données JMP actuellement active. Laissez la table ouverte et active avant d'exécuter l'analyse.
- La table de données doit contenir deux colonnes numériques de valeurs d'ID de nœud, chaque ligne représentant une connexion.
- Le script convertit la table de données JMP en une trame de données Pandas pour la saisie dans NetworkX.
- L'analyse de l'ensemble des données complètes peut prendre jusqu'à plusieurs minutes en fonction de votre machine. Un sous-ensemble de données est fourni et peut être analysé en 30 secondes environ sur un Macbook Pro 2021 équipé d'un processeur M1 Pro.
- Pour afficher le graphique de réseau dans JMP, le graphique est d'abord enregistré au format png dans le répertoire temporaire du système d'exploitation, puis ouvert à l'aide de JSL. Le fichier png est automatiquement supprimé du répertoire temporaire.
Produits et plateformes scriptées
Produits : JMP 18+
Plateformes scriptées : intégration Python
La source de données
Des dossiers
- NetworkData_Full.jmp : ensemble de données complet de 88 234 connexions Facebook
- NetworkData.jmp : Sous-ensemble de NetworkData_Full.jmp qui peut être pratique pour les démos en direct
- networkAnalysis.jsl : script JSL qui complète l'analyse du réseau
- networkAnalysis.py : Script Python qui complète l'analyse du réseau
- Network Centrality Measures.jmpaddin : Complément qui exécute le même code JSL que dans networkAnalysis.jsl
- Démo Exemple.mp4 : exemple de démonstration