Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +

graph解析.png

Ce que tu as fait et ce que tu voulais faire

Je développe et exploite un service d'exploration de talents appelé TalentBase, qui analyse une énorme quantité de données sociales.

Dans de telles circonstances, j'ai décidé d'analyser «quelle est la distance entre cette personne et cette personne?» Dans le cadre de l'analyse graphique afin d'appréhender la relation humaine.

Environnement

Python, NetworkX Si est installé, vous pouvez l'implémenter immédiatement.

Préparation des données

Pour les données, j'ai décidé d'utiliser les données graphiques dirigées de SNS et d'essayer de tracer virtuellement la distance en tant que problème d'itinéraire le plus court entre les personnes.

Étant donné que les données étaient stockées dans MySQL, je les ai implémentées avec un schéma de connexion à la base de données à l'aide de mysql-connector, d'acquisition de données de graphe dirigé et de calcul avec NetworkX.

Mise en œuvre / calcul

main.py


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import networkx as nx
    import mysql.connector
    
    db_config = {
      'user': 'USERNAME',
      'password': 'PASSWORD',
      'host': 'HOST',
      'database': 'DATABASE',
      'port': 'PORT'
    }
    
    connect = mysql.connector.connect(**db_config)
    cur=connect.cursor(buffered=True)
    
    g = nx.DiGraph()
    
    cur.execute("select FROM_USER_ID,TO_USER_ID,WEIGHT from TABLE_NAME")
    rows = cur.fetchall()
    
    for row in rows:
      if row[0] == row[1] or row[0] is None or row[1] is None:
        continue
      g.add_node(str(row[0]))
      g.add_node(str(row[1]))
      g.add_edge(str(row[0]),str(row[1]), weight=int(row[2]))
    
    #Trouvez l'itinéraire le plus court par la méthode Dyxtra
    print nx.dijkstra_path(g, 'NODE1', 'NODE2') #Afficher l'itinéraire le plus court de NODE1 à NODE2
    #Exemple de sortie=> ['NODE1','NODE9','NODE3','NODE7','NODE5','NODE2']
    print nx.dijkstra_path_length(g, 'NODE1', 'NODE2') #Sortie de la distance de l'itinéraire le plus court de NODE1 à NODE2(Si tous les poids sont 1, le nombre à travers NODE sera la distance)
    #Exemple de sortie=> 8

Considération

Si vous commencez à traiter une grande quantité de données graphiques, le calcul effectué cette fois prendra beaucoup de temps, donc La prochaine fois, j'aimerais analyser en utilisant GraphDB, qui représente Neo4j et ainsi de suite.

Recommended Posts

Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Essayez de résoudre le diagramme homme-machine avec Python
Essayez de résoudre le livre des défis de programmation avec python3
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Visualisez les données d'itinéraires ferroviaires et résolvez les problèmes d'itinéraires les plus courts (Python + Pandas + NetworkX)
Essayez de résoudre le problème du fizzbuzz avec Keras
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
Trouvez l'itinéraire le plus court avec l'algorithme de Python Dijkstra
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
J'ai essayé de résoudre le problème avec Python Vol.1
Essayez de gratter les données COVID-19 Tokyo avec Python
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Essayez d'exploiter Facebook avec Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Essayez de résoudre le problème N Queen avec SA de PyQUBO
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Convertir des données Excel en JSON avec python
Je voulais résoudre ABC160 avec Python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Essayez de convertir en données ordonnées avec les pandas
Je voulais résoudre ABC172 avec Python
La route de la compilation vers Python 3 avec Thrift
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Le 16ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (théorie)
Le 19ème comment écrire un problème de référence en temps réel hors ligne à résoudre avec Python
Essayez de résoudre un problème défini de mathématiques au lycée avec Python
Essayez d'agréger les données de musique doujin avec des pandas
Je voulais résoudre NOMURA Contest 2020 avec Python
J'ai essayé de sauvegarder les données avec discorde
Le moyen le plus simple de synthétiser la voix avec python
Essayez de dessiner une courbe de vie avec python
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Comment essayer l'algorithme des amis d'amis avec pyfof
Dites bonjour au monde avec Python avec IntelliJ
J'ai essayé d'obtenir des données CloudWatch avec Python
Essayez de créer un code de "décryptage" en Python
Essayez de générer automatiquement des documents Python avec Sphinx
Le moyen le plus simple d'utiliser OpenCV avec python
Introduction à Python avec Atom (en route)
Je veux résoudre APG4b avec Python (chapitre 2)
Essayez de créer un groupe de dièdre avec Python
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (résultat de l'exécution)
Affichage des données d'informations de position en Python --Essayez de tracer avec la bibliothèque d'affichage de carte (folium) -
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Analyse de données avec python 2
Essayez de gratter avec Python.
Résolvez AtCoder 167 avec python
[Python] Essayez de lire la bonne réponse au problème FizzBuzz