Python-Page-Rangberechnung und Visualisierung sozialer Diagramme, die selbst Affen ausführen können

Ich habe versucht, mit Vagrant + VirtualBox + Python + Bibliothek einfach eine virtuelle Umgebung zu erstellen und zu implementieren.

Ich beschäftigte mich mit sozialen Graphen und Matrizen mit Rubin, und es war oft schwierig, damit umzugehen. Als ich mit Python Matrixberechnung und Graphvisualisierung versuchte, war es wahnsinnig einfach und praktisch, also fasste ich es zusammen.

Informationen zur verwendeten Python-Bibliothek

  1. Scipy scipy, das Paket enthält eine Vielzahl von Toolboxen für häufig auftretende Probleme im Bereich Wissenschafts- und Technologie-Computing. Der Anwendungsbereich ist für jedes Submodul unterschiedlich. Der Anwendungsbereich umfasst beispielsweise Ergänzung, Integration, Optimierung, Bildverarbeitung, Statistik, Sonderfunktionen usw. scipy wird mit anderen Standardbibliotheken für Wissenschafts- und Technologiecomputer wie GSL (GNU Scientific Library für C und C ++) und Matlabs Toolbox verglichen. scipy ist das Kernpaket der Berechnungsroutinen für Wissenschaft und Technologie in Python. Es verarbeitet Numpy-Arrays effizient, sodass Numpy und Scipy eng zusammenarbeiten.

  2. Numpy NumPy ist eine Erweiterung der Programmiersprache Python, die Unterstützung für große mehrdimensionale Arrays und Matrizen sowie eine große Bibliothek mathematischer Funktionen auf hoher Ebene zur Bearbeitung dieser Arrays bietet. NumPy wird häufig zusammen mit SciPy in wissenschaftlichen und technologischen Berechnungen verwendet. Da Matrixoperationen mit hoher Geschwindigkeit ausgeführt werden können, bietet OpenCV (Computer Vision Library) außerdem eine Python-Schnittstelle mit NumPy.

  3. NetworkX NetworkX ist eine Python-Netzwerkanalyse- und Visualisierungsbibliothek. Das Netzwerk, auf das hier Bezug genommen wird, ist nicht auf das tatsächliche Kommunikationsnetz (Modell) beschränkt, sondern weist eine Struktur auf, in der den Seiten des Diagramms ein Wert zugewiesen wird, der als Gewicht bezeichnet wird. Wenn Sie nicht über das Gewicht nachdenken, können Sie mit normalen Diagrammen umgehen, da Sie davon ausgehen können, dass alle Seiten das gleiche Gewicht haben. Mit anderen Worten, Sie können NetworkX verwenden, um verschiedene Dinge mit dem Diagramm zu tun.

  4. matplotlib Matplotlib ist eine Grafikzeichnungsbibliothek für die Programmiersprache Python und ihre wissenschaftliche Computerbibliothek NumPy. Es bietet eine objektorientierte API und kann verschiedene Arten von Diagrammen zeichnen. Es können hauptsächlich zweidimensionale Diagramme gezeichnet werden, aber die Funktion dreidimensionaler Diagramme wurde ebenfalls hinzugefügt. Sie können das gezeichnete Diagramm als Bild in verschiedenen Formaten (einschließlich verschiedener Vektorbildformate) speichern oder die Diagrammzeichnungsfunktion in eine Anwendung integrieren, die von einem allgemeinen GUI-Toolkit wie wxPython, Qt, GTK erstellt wurde. .. Es hat auch eine Schnittstelle namens Pylab, die so etwas wie eine interaktive MATLAB-Umgebung bietet. Matplotlib wird unter einer BSD-Lizenz vertrieben. (über http://ja.wikipedia.org/wiki/Matplotlib)


Umgebung

1. Erstellen Sie eine virtuelle Maschine mit Vagrant + VirtualBox und melden Sie sich bei ssh an

http://qiita.com/gyhino@github/items/8c10249019cf1e9fce34

2. Installieren Sie Python

3. Installieren Sie pip

http://pip.readthedocs.org/en/latest/installing.html

4. Installieren Sie, was Sie für Python benötigen

http://d.hatena.ne.jp/shinriyo/20120623/p1

5. Installieren Sie die Python-Bibliothek

sudo pip install numpy
sudo easy_install scipy
#sudo pip install scipy hat so einfach einen Fehler bekommen_Ich habe install verwendet
sudo easy_install matplotlib
sudo pip install networkx

## Was ich versucht habe ### 1. Berechnung des Seitenrangs, den selbst Affen machen können ### 2. Visualisierung von sozialen Graphen, die auch im Schlaf erstellt werden können --
### 1. Berechnung des Seitenrangs, den selbst Affen machen können Die Datei, die den Seitenrang mit einem einfachen Diagramm berechnet, und die Ausführungsmethode werden beschrieben.

pagerank.py



# -*- coding: utf-8 -*-
import networkx as nx

#Erstellen Sie eine Instanz eines gerichteten Diagramms
g = nx.DiGraph()

#Hinzufügen eines Knotens * Personen werden häufig zu Knoten in sozialen Diagrammen
g.add_node(1)
g.add_node(2)
g.add_node(3)                                                                                                                     
g.add_node(4)
g.add_node(5)
g.add_node(6)
#Wagen Sie es, es leicht verständlich zu machen

#Pfeile zwischen Knoten hinzufügen * Für soziale Diagramme, Freundschaften, Folgen und Likes! Eine solche
g.add_edge(1,2)
g.add_edge(1,3)
g.add_edge(1,4)
g.add_edge(2,3)
g.add_edge(3,4)
g.add_edge(3,5)
g.add_edge(2,6)
g.add_edge(5,6)
g.add_edge(1,6)
#Wagen Sie es, es leicht verständlich zu machen

#Berechnung des Pagerank-Werts
pr=nx.pagerank(g,alpha=0.85)

#Berechnung des Pagerank-Werts(Verwenden Sie numpy)
prn=nx.pagerank_numpy(g,alpha=0.85)

#Berechnung des Pagerank-Werts(Verwenden Sie scipy)
prc=nx.pagerank_scipy(g,alpha=0.85)

#Anzeige der Berechnungsergebnisse
print("-----pagerank-----")
print(pr)

print("-----pagerank(numpy)-----")
print(prn)

print("-----pagerank(scipy)-----")
print(prc)

$ python pagerank.py

Wenn Sie ausführen, erhalten Sie das folgende Ergebnis.

#normal
{1: 0.09239221032272713, 2: 0.11202546652062978, 3: 0.1596362278548462, 4: 0.1798708491907905, 5: 0.1602375929928878, 6: 0.29583765311811816}

#numpy
{1: 0.09239208559289437, 2: 0.11202540378138424, 3: 0.15963620038847254, 4: 0.1798707889464852, 5: 0.16023747075799505, 6: 0.2958380505327687}

#scipy
{1: 0.09239221032272715, 2: 0.11202546652062981, 3: 0.15963622785484624, 4: 0.17987084919079052, 5: 0.16023759299288784, 6: 0.29583765311811827}

Offensichtlich ist die Antwort fast dieselbe.

--

2. Visualisierung von sozialen Graphen, die auch im Schlaf erstellt werden können

social_graph_visualization.py



# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib import animation
import networkx as nx
import random

#Netzwerk
g = nx.Graph()
def get_fig(node_number):                                                                                                         
    g.add_node(node_number, Position=(random.randrange(0, 100), random.randrange(0, 100)))
    g.add_edge(node_number, random.choice(g.nodes()))
    nx.draw(g, pos=nx.get_node_attributes(g,'Position'))

fig = plt.figure(figsize=(10,8))

anim = animation.FuncAnimation(fig, get_fig, frames=100)
anim.save('graph_gifani.gif', writer='imagemagick', fps=10);

$ python social_graph_visualization.py

Wenn Sie ausführen, sollte das folgende GIF Ani im Ordner gespeichert werden.

GraphGifAnimation

--

Zusammenfassung

Es ist lustig! Es ist einfach! !!

Ich wollte für eine Weile APIs und Apps mit Python erstellen, also werde ich in naher Zukunft etwas Interessantes machen!

Recommended Posts

Python-Page-Rangberechnung und Visualisierung sozialer Diagramme, die selbst Affen ausführen können
IOS-Anwendungsentwicklung mit Python (kivy), die selbst Affen können
Automatischer Browser-Betrieb, den auch Anfänger ausführen können
Einführung in Python, die auch Affen verstehen können (Teil 3)
Einführung in Python, die auch Affen verstehen können (Teil 2)