Calcul du classement Python-Page et visualisation des graphes sociaux que même les singes peuvent faire

J'ai essayé de créer et d'implémenter facilement un environnement virtuel avec la bibliothèque Vagrant + VirtualBox + Python +.

J'avais affaire à des graphes sociaux et des matrices avec ruby, et c'était souvent difficile à gérer, donc quand j'ai essayé le calcul matriciel et la visualisation de graphes avec Python, c'était incroyablement facile et pratique, alors je l'ai résumé.

À propos de la bibliothèque Python utilisée

  1. Scipy scipy, le paquet contient une variété de boîtes à outils pour les problèmes courants de l'informatique scientifique et technologique. Le domaine d'application est différent pour chaque sous-module. Le domaine d'application est, par exemple, la complémentation, l'intégration, l'optimisation, le traitement d'image, les statistiques, les fonctions spéciales, etc. scipy est comparé à d'autres bibliothèques de calcul scientifique et technologique standard telles que GSL (GNU Scientific Library for C et C ++) et Matlab's Toolbox. scipy est le package de base des routines de calcul scientifique et technologique en Python; il gère efficacement les tableaux numpy, de sorte que numpy et scipy travaillent en étroite collaboration.

  2. Numpy NumPy est une extension du langage de programmation Python qui prend en charge les grands tableaux et matrices multidimensionnels, ainsi qu'une grande bibliothèque de haut niveau de fonctions mathématiques pour les manipuler. NumPy est souvent utilisé dans les calculs scientifiques et technologiques avec SciPy. De plus, OpenCV (Computer Vision Library) fournit désormais une interface Python utilisant NumPy car il peut effectuer des opérations matricielles à grande vitesse.

  3. NetworkX NetworkX est une bibliothèque d'analyse et de visualisation de réseau Python. Le réseau auquel il est fait référence ici n'est pas limité au réseau de communication réel (modèle), mais a une structure dans laquelle une valeur appelée poids est attribuée aux côtés du graphique. Si vous ne pensez pas au poids, vous pouvez gérer des graphiques ordinaires car vous pouvez supposer que tous les côtés ont le même poids. En d'autres termes, vous pouvez utiliser NetworkX pour faire diverses choses avec le graphique.

  4. matplotlib Matplotlib est une bibliothèque de dessin de graphes pour le langage de programmation Python et sa bibliothèque de calcul scientifique NumPy. Il fournit une API orientée objet et a la capacité de dessiner différents types de graphiques. Il est possible de dessiner des tracés principalement en deux dimensions, mais la fonction de tracés en trois dimensions a également été ajoutée. Vous pouvez enregistrer le graphique dessiné sous forme d'image dans divers formats (y compris divers formats d'images vectorielles), ou vous pouvez incorporer la fonction de dessin de graphique dans une application créée par une boîte à outils GUI générale telle que wxPython, Qt, GTK. .. Il a également une interface appelée pylab qui fournit quelque chose comme un environnement interactif MATLAB. Matplotlib est distribué sous une licence de type BSD. (via http://ja.wikipedia.org/wiki/Matplotlib)


Environnement

1. Créez une machine virtuelle avec Vagrant + VirtualBox et connectez-vous à ssh

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

2. Installez Python

3. Installez pip

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

4. Installez ce dont vous avez besoin pour Python

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

5. Installez la bibliothèque Python

sudo pip install numpy
sudo easy_install scipy
#sudo pip install scipy a eu une erreur si facile_J'ai utilisé installer
sudo easy_install matplotlib
sudo pip install networkx

## Ce que j'ai essayé ### 1. Calcul du classement de page que même les singes peuvent faire ### 2. Visualisation des graphiques sociaux qui peuvent être réalisés même en dormant --
### 1. Calcul du classement de page que même les singes peuvent faire Le fichier qui calcule le rang de page avec un graphique simple et la méthode d'exécution sont décrits.

pagerank.py



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

#Créer une instance d'un graphe orienté
g = nx.DiGraph()

#Ajouter un nœud * Les gens deviennent souvent des nœuds dans les graphes sociaux
g.add_node(1)
g.add_node(2)
g.add_node(3)                                                                                                                     
g.add_node(4)
g.add_node(5)
g.add_node(6)
#Osez le rendre facile à comprendre

#Ajoutez des flèches entre les nœuds * Pour les graphiques sociaux, les amitiés, les suivis et les likes! Tel
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)
#Osez le rendre facile à comprendre

#Calcul de la valeur du pagerank
pr=nx.pagerank(g,alpha=0.85)

#Calcul de la valeur du pagerank(Utilisez numpy)
prn=nx.pagerank_numpy(g,alpha=0.85)

#Calcul de la valeur du pagerank(Utilisez scipy)
prc=nx.pagerank_scipy(g,alpha=0.85)

#Affichage des résultats de calcul
print("-----pagerank-----")
print(pr)

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

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

$ python pagerank.py

Lorsque vous exécutez, le résultat suivant sera obtenu.

#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}

De toute évidence, la réponse est presque la même.

--

2. Visualisation des graphiques sociaux qui peuvent être réalisés même en dormant

social_graph_visualization.py



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

#réseau
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

Lorsque vous exécutez, le gif Ani suivant doit être enregistré dans le dossier.

GraphGifAnimation

--

Résumé

C'est marrant! C'est facile! !!

Je voulais créer des API et des applications avec Python pendant un certain temps, alors je ferai quelque chose d'intéressant dans un proche avenir!

Recommended Posts

Calcul du classement Python-Page et visualisation des graphes sociaux que même les singes peuvent faire
Développement d'applications IOS avec Python (kivy) que même les singes peuvent faire
Fonctionnement automatique du navigateur que même les débutants peuvent faire
Introduction à Python que même les singes peuvent comprendre (partie 3)
Introduction à Python que même les singes peuvent comprendre (partie 2)