Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen

graph解析.png

Was du getan hast und was du tun wolltest

Ich entwickle und betreibe einen Talent Mining-Dienst namens TalentBase, der eine große Menge sozialer Daten analysiert.

Unter solchen Umständen habe ich beschlossen, im Rahmen der Diagrammanalyse zu analysieren, wie weit diese Person und diese Person entfernt sind, um die menschliche Beziehung zu erfassen.

Umgebung

Python, NetworkX Wenn installiert, können Sie es sofort implementieren.

Datenaufbereitung

Für die Daten habe ich mich entschieden, die gerichteten Grafikdaten von SNS zu verwenden und zu versuchen, die Entfernung virtuell als das kürzeste Routenproblem zwischen Personen darzustellen.

Da die Daten in MySQL gespeichert waren, implementierte ich sie mit einem Schema zum Herstellen einer Verbindung mit DB über den MySQL-Connector, zum Erfassen gerichteter Diagrammdaten und zum Berechnen mit NetworkX.

Implementierung / Berechnung

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]))
    
    #Finden Sie den kürzesten Weg mit der Dyxtra-Methode
    print nx.dijkstra_path(g, 'NODE1', 'NODE2') #Geben Sie den kürzesten Weg von NODE1 nach NODE2 aus
    #Ausgabebeispiel=> ['NODE1','NODE9','NODE3','NODE7','NODE5','NODE2']
    print nx.dijkstra_path_length(g, 'NODE1', 'NODE2') #Geben Sie die Entfernung der kürzesten Route von NODE1 zu NODE2 aus(Wenn alle Gewichte 1 sind, ist die Zahl über NODE die Entfernung)
    #Ausgabebeispiel=> 8

Erwägung

Wenn Sie mit der Verarbeitung einer großen Menge von Diagrammdaten beginnen, dauert die diesmal durchgeführte Berechnung sehr lange Das nächste Mal möchte ich mit GraphDB analysieren, das Neo4j usw. darstellt.

Recommended Posts

Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Visualisieren Sie Eisenbahnstreckendaten und lösen Sie kürzeste Streckenprobleme (Python + Pandas + NetworkX)
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
[Einführung in den Algorithmus] Finden Sie den kürzesten Weg [Python3]
Finden Sie den kürzesten Weg mit dem Python Dijkstra-Algorithmus
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Versuchen Sie, Facebook mit Python zu betreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Versuchen Sie, das N Queen-Problem mit SA von PyQUBO zu lösen
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Konvertieren Sie Excel-Daten mit Python in JSON
Ich wollte ABC160 mit Python lösen
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Ich wollte ABC172 mit Python lösen
Der Weg zum Kompilieren zu Python 3 mit Thrift
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
Das 16. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Theorie)
Das 19. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Ich wollte den NOMURA Contest 2020 mit Python lösen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Der einfachste Weg, um Stimme mit Python zu synthetisieren
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
Begrüßen Sie die Welt mit Python mit IntelliJ
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Der einfachste Weg, OpenCV mit Python zu verwenden
Einführung in Python mit Atom (unterwegs)
Ich möchte APG4b mit Python lösen (Kapitel 2)
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Ausführungsergebnis)
Anzeige von Positionsinformationsdaten in Python - Versuchen Sie, mit der Kartenanzeigebibliothek (Folium) zu zeichnen -
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Datenanalyse mit Python 2
Versuchen Sie es mit Python.
Löse AtCoder 167 mit Python
[Python] Versuchen Sie, die coole Antwort auf das FizzBuzz-Problem zu lesen