Redes Sociales
Para analizar redes sociales, podemos usar grafos donde los nodos son las personas y las aristas representan la interacción entre ellas (como seguirse o ser amigos). Vamos a analizar el grafo de Twitter de Barack Obama.
import networkx as nx
import matplotlib.pyplot as plt
# Creamos el grafo vacío
G = nx.Graph()
# Agregamos los nodos (en este caso las cuentas de Twitter)
G.add_nodes_from(['@BarackObama', '@JoeBiden', '@HillaryClinton', '@MichelleObama', '@POTUS'])
# Agregamos las aristas (en este caso los seguidores entre estas cuentas)
G.add_edges_from([('BarackObama', 'JoeBiden'), ('BarackObama', 'HillaryClinton'), ('BarackObama', 'MichelleObama'), ('BarackObama', 'POTUS')])
# Visualizamos el grafo
nx.draw(G, with_labels=True)
plt.show()
# Obtenemos el número de nodos y aristas
print("Número de nodos:", G.number_of_nodes())
print("Número de aristas:", G.number_of_edges())
# Obtenemos el camino más corto entre dos nodos
print("Camino más corto entre 'BarackObama' y 'POTUS':", nx.shortest_path(G, 'BarackObama', 'POTUS'))
Análisis de Redes de Transporte
Para analizar una red de transporte, podemos usar grafos donde los nodos son las estaciones de tren o autobús y las aristas representan las líneas que conectan estas estaciones. Vamos a analizar la red de metro de la Ciudad de México.
# Cargamos los datos de la red de metro de la Ciudad de México
metros = nx.Graph(nx.read_gml('http://bit.ly/3eKz0lz', label='label'))
# Visualizamos el grafo
nx.draw(metros, with_labels=True)
plt.show()
# Obtenemos el número de nodos y aristas
print("Número de estaciones:", metros.number_of_nodes())
print("Número de líneas:", metros.number_of_edges())
# Obtenemos las estaciones más cercanas a una estación dada
print("Estaciones más cercanas a 'CU':", [n for n in metros.adj['CU']])
Recomendación de Productos
Para recomendar productos, podemos usar grafos donde los nodos son los productos y las aristas representan las relaciones entre ellos (como el hecho de que se compren juntos). Vamos a analizar un pequeño grafo de recomendaciones de productos.
# Creamos el grafo vacío
G = nx.Graph()
# Agregamos los nodos (en este caso algunos productos)
G.add_nodes_from(['computadora', 'teléfono', 'tablet', 'impresora'])
# Agregamos las aristas (en este caso las relaciones de compra entre los productos)
G.add_edges_from([('computadora', 'impresora'), ('teléfono', 'tablet'), ('tablet', 'impresora')])
# Visualizamos el grafo
nx.draw(G, with_labels=True)
plt.show()
# Obtenemos los productos recomendados para un usuario que ha comprado ciertos productos
comprados = ['computadora', 'teléfono']
recomendados = [n for n in G.nodes() if n not in comprados and G.has_edge(comprados[0], n) and G.has_edge(comprados[1], n)]
print("Productos recomendados para el usuario:", recomendados)