pitón lograr la agrupación de cálculo de coeficiente de la agrupación coeficiente

coeficiente de agrupamiento local se calcula para cada nodo

 

 Para el nodo vi, sus vecinos inmediatos para identificar un conjunto de nodos Ni, Ni de haber calculado el número de aristas en el grafo K, dividido por el número de lados del conjunto de posibles Ni | Ni | * (| Ni | -1) / 2 ( grafo no dirigido ) o | ni | * (| ni | -1) ( dígrafo)

código:

# Encoding = UTF. 8- 
# búsqueda de nodos de gráficos agrupación y el promedio de coeficiente de agrupamiento coeficiente 
ce_list = [] 
node_set = SET () 
edge_set = SET () 
node_list = [] 
edge_list2 = []
 # promedio de cada nodo coeficiente de agrupamiento 
DEF getCE (nodo, EdgeList):
     # Get el nodo actual es puntos directamente adyacentes en el conjunto de node_set almacenado 
    para Edge en EdgeList:
         SI Edge [0] == nodo: 
            node_set.add ([Edge . 1 ])
         elif Edge [. 1] == nodo: 
            node_set.add (Edge [0]) 
    #El número de lados para encontrar un punto adyacente al conjunto de puntos constituida 
    por Edge en EdgeList:
         SI Edge [0] en node_set y Edge [. 1] en node_set: 
            S = Edge [0] + Edge [. 1 ] 
            edge_set.add (S) 

    neighbourNodeNum = len (node_set)   # vecino número de punto nodo 
    neighbouredgeNum = len (edge_set)   # puntos adyacentes número tira de borde 
    de impresión ( " vecino nodo el Num: " , neighbourNodeNum)
     Imprimir ( " vecino el borde Num: " , neighbouredgeNum) 
    ceNum =0
     # buscando coeficiente de agrupamiento de fórmula 
    IF neighbourNodeNum> 1. : 
        CeNum = 2 * neighbouredgeNum / (. (1-neighbourNodeNum) * neighbourNodeNum) # . Grafo no dirigido se multiplica por 2, no son requeridos por la figura 2 
    ce_list.append (ceNum) 
    node_set .clear () 
    edge_set.clear () 
DEF getAverageCE (ce_list): 
    total = 0
     para la CE en ce_list: 
        total + = CE
     retorno total / len (ce_list)
 DEF main ():
     # lee la información lateral de un archivo 
    con abierta ( ' facebook_combined.txt ', Encoding = ' UTF-8. ' ) AS F1: 
        edge_list = f1.readlines ()
     # formateado información lateral, que se retira al final de la \ n- 
    para I en Rango (len (edge_list)): 
        spiltList = edge_list [I] .replace ( ' \ n ' , "" ) .split ( "  " ,. 1 ) 
        edge_list2.append (spiltList) 
    # lee la información del nodo debe ser leído desde el archivo, pero dado el nombre de nodo 0 a 4038, la sencillez directa traversal 
    para I en Rango (4039 ): 
        node_list.append (STR (I)) 
    # calcula los coeficientes para cada nodo de clúster 
    de nodo ennode_list:
         Imprimir (Node) 
        getCE (Node, edge_list2) 
    # coeficientes de salida para cada nodo de clúster 
    de impresión (ce_list)
     # coeficiente promedio de la agrupación de salida 
    de impresión (getAverageCE (ce_list)) 

SI  la __name__ == " __main__ " : 
    main ()
formato de datos facebook_combined.txt:

 

Supongo que te gusta

Origin www.cnblogs.com/ttzz/p/12667029.html
Recomendado
Clasificación