Red de conocimiento informático - Material del sitio web - Análisis preliminar de la red social Marvel en Neo4j - artículo anterior

Análisis preliminar de la red social Marvel en Neo4j - artículo anterior

Este artículo es el segundo artículo de la serie de análisis de redes sociales de Marvel; en el artículo anterior, importamos los datos de Marvel de la publicación de competencia de Kaggle a Neo4j y demostramos cómo mapear desde el gráfico de dos caras a Gráfico unilateral. También utilizamos un modelo simple para rastrear la cantidad de veces que dos héroes aparecieron juntos en los cómics.

Para facilitar la comprensión, utilizamos las siguientes funciones:

De

A

Además, también se puede asignar a un solo gráfico cuadrado, como se muestra a continuación

Bien, hablemos de esto primero. Después de importar los datos del gráfico, podemos comenzar el resto del análisis.

Ya tenemos un modelo de gráfico simple, a continuación comenzaremos con una red de gráfico cuadrado doble (dos tipos de nodos) de héroes y cómics, y en base a los dos héroes El número de ocurrencias en el mismo cómic deriva un único gráfico cuadrado (solo un tipo de nodo).

A continuación, realizaremos algunos análisis del gráfico unilateral derivado anteriormente. Cuando se trata de análisis de datos, mi hábito habitual es hacer primero algunas estadísticas globales para tener una idea aproximada de la trama y luego profundizar en los detalles.

Primero echemos un vistazo a la distribución de héroes con pesos similares. El peso se refiere al número total de veces que aparecen dos héroes en un mismo cómic.

El primer vistazo a esta declaración de consulta muestra que cuando aparece una cláusula como ? (k.weight / 10) * 10, la gente definitivamente pensará que se trata de una declaración muy estúpida. Pero si comprende las reglas de cálculo de Neo4j (dividiendo dos números enteros, el resultado sigue siendo un número entero), comprenderá que escribimos esto para implementar la función de la función "cubo", que es asignar pesos a los cubos con un múltiplo. de 10 . Esto facilita la comprensión de los siguientes resultados.

? Se puede ver en los resultados que entre las 171,644 relaciones en la red Marvel Heroes, hay 162,489 relaciones (que representan el 94% de los datos totales de relaciones en este momento). ) Un peso de 10 o menos significa que la mayoría de los héroes tienen sólo una relación entre sí.

La relación con mayor peso es la 724, que son "THING/BENJAMIN J. GR" y "HUMAN TORCH/JOHNNY S" (Human Torch).

Aunque todos en la red social de los héroes de Marvel se conocen, los resultados ponderados muestran que la mayoría de las conexiones son muy débiles. Voy a hacer dos suposiciones audaces:

Para probar mis suposiciones, primero lo probaré usando la siguiente consulta.

Si bien algunas métricas promedio se muestran arriba, personalmente prefiero mirar la distribución, como cuando uso la función "depósito":

< / p>

Parece que mi hipótesis funcionó bien, con 8999 (71%) héroes que aparecen en el cómic menos de 10 veces, más el número promedio de veces por episodio. Hay 8999 (71%) héroes que aparecen menos de 10 veces en los cómics, y cuando se combina con el promedio previamente extrapolado de 7,5 héroes por episodio, está claro que la mayoría de los cómics probablemente solo tengan 5 héroes o menos. Algunas "fiestas en casa" cómicas cuentan con más de 30 héroes. En un cómic que se llama COCI, hubo un episodio donde aparecieron 110 héroes, creo que fue el tema de la Convención de Superhéroes.

Podemos utilizar el método max o min para normalizar el valor del peso. Tenga en cuenta que esta vez usamos ? (toFloat(k1.weight) - min)/ (max - min) ? que primero convierte k1.weight en un valor flotante, por lo que dividir un valor flotante por un valor entero seguirá dando como resultado puntos flotantes. Al mismo tiempo, no se agrupará en el depósito anterior.