Requisito previo: gráficos , conceptos básicos de Networkx
La red Ego es un tipo especial de red que consta de un Node central y todos los demás Nodes conectados directamente a él. El Node central se conoce como ego , mientras que los otros Nodes circundantes conectados directamente a él se conocen como alters . Las redes de ego se utilizan principalmente para analizar conexiones sociales, vínculos y relaciones. La red que se muestra a continuación es una ilustración de Ego Network. El Node central (ego) se muestra como circular rodeado por los Nodes vecinos (alter).
La red Ego es ampliamente utilizada en el análisis de redes sociales. La hipótesis básica sobre las redes del ego es que los lazos fuertes son homófilos. Homófilo es la tendencia de las personas que están socialmente conectadas de alguna manera a mostrar ciertos rasgos o similitudes entre sí. En palabras simples, las personas de ideas afines están fuertemente conectadas de alguna manera. La red del ego nos ayuda a identificar estas conexiones ocultas.
Las siguientes funciones son atendidas por Ego Networks:
- Propagación de la información de manera eficiente.
- Creación de sentido a partir de enlaces, por ejemplo: enlaces sociales, relaciones.
- Acceso a recursos, generación eficiente de rutas de conexión.
- Detección de comunidades, identificación de la formación de grupos.
- Análisis de los lazos entre individuos para el apoyo social.
La forma más sencilla de implementar una red ego en cualquier base de datos de gráficos es mediante la biblioteca Networkx. Proporciona muchas funciones predefinidas para el análisis y visualización de redes.
Networkx: Networkx es un paquete de Python para la creación, análisis y estudio de la naturaleza de redes complejas. Es una de las bibliotecas de Python más populares utilizadas para el análisis de redes.
Instalación del paquete:
pip install networkx
La biblioteca Networkx proporciona el método ego_graph() para generar una red ego a partir de cualquier gráfico. El método toma dos parámetros obligatorios y cuatro parámetros opcionales adicionales.
Sintaxis: ego_graph(G, n, radio=1, centro=Verdadero, no dirigido=Falso, distancia=Ninguna)
Parámetros:
- G (gráfico): un gráfico NetworkX (la red principal en cuya red ego se creará)
- N (Node) – Un solo Node (Ego/Node central de la red ego)
- Radio (número, opcional): incluye todos los vecinos de distancia <= radio de n.
- Centro (bool, opcional): si es falso, no incluya el Node central (ego) en el gráfico
- No dirigido (bool, opcional): si es verdadero, use tanto los vecinos internos como externos de los gráficos dirigidos.
- Distancia (clave, opcional): use la clave de datos de borde especificada como distancia. Por ejemplo, si estableces distance=’weight’, se usará el peso del borde para medir la distancia desde el Node n.
Creando una red de muestra
Estamos tomando una red de muestra con pocos Nodes interconectados entre sí. En este ejemplo, los Nodes son – (A, B, C, D, E, F, G, H), de estos Nodes se toma un Node como el Node central (ego), en nuestro caso hemos tomado A como el ego. El siguiente código crea y muestra nuestra red de muestra.
Ejemplo:
Python3
# import networkx for graph generation import networkx as nx # import matplotlib library import matplotlib.pyplot as plt # generation of a sample graph G = nx.Graph() G.add_edges_from([('A', 'B'), ('A', 'C'), ('B', 'C'), ('E', 'F'), ('D', 'E'), ('A', 'D'), ('D', 'G'), ('C', 'F'), ('D', 'F'), ('E', 'H')]) # Defining ego as large and red # while alters are in lavender # Let 'A' be the ego ego = 'A' pos = nx.spring_layout(G) nx.draw(G, pos, node_color = "lavender", node_size = 800, with_labels = True) options = {"node_size": 1200, "node_color": "r"} nx.draw_networkx_nodes(G, pos, nodelist=[ego], **options) plt.show()
Producción:
El Node A se define como ego y, por lo tanto, se muestra en rojo.
Creando una red de ego
El siguiente código crea y muestra la red de ego considerando el Node A como el ego.
Python3
# create ego network hub_ego = nx.ego_graph(G, ego) # showing the ego network nx.draw(hub_ego, pos, node_color="lavender", node_size = 800, with_labels = True) nx.draw_networkx_nodes( hub_ego, pos, nodelist = [ego], **options) plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por rishujamaiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA