Simulación de un caso real utilizando Neo4J para análisis de red
Enviado por Johanna Rosero Gomezcoello • 9 de Mayo de 2023 • Informe • 1.552 Palabras (7 Páginas) • 233 Visitas
[pic 1]
Simulación de un caso real utilizando Neo4J para análisis de red
Nombre: Johanna Rosero
- Obtener una base de datos: Obtener una base de datos, de preferencia del lugar de trabajo o si es emprendedor, de su organización. Si no dispone de datos, obtener una base de datos pública que sea relevante para su proyecto. Asegurarse de que los datos sean relevantes y útiles para el proyecto.
El dataset utilizado para la resolución del siguiente proyecto, es una fuente de de una red de bancos, en donde se enlista los diferentes dispositivos existentes y las transacciones realizadas.
A continuación, se detalla cada columna del dataset:
CAMPOS | DESCRIPCIÓN |
PROVINCIA | Provincias de Ecuador en donde se ubican los diferentes cajeros |
DISPOSITIVO | Cajeros en donde se realizan diferentes transacciones, su nombre se concatena de un código y el nombre de la institución financiera adquirente |
ESTADO_TRX | Indica cuál es el estado de la tracción realizada en el cajero |
GRUPO_TRX | Las transacciones son agrupadas de acuerdo a su tipo de transacción |
MARCA | Indica la marca del dispositivo |
TIPO_DISPOSITIVO | Clasificación del dispositivo |
TIPO_INSTITUCION | Identifica que tipo de institución es aquella que autoriza la transacción |
TIPO_UBICACION | Ubicación específica del cajero |
INSTITUCION_ADQUIRENTE | Institución a la cual pertenece el cajero y se realiza la transacción |
INSTITUCION_AUTORIZADORA | Institución que autoriza que se realice la transacción |
TIPO | Tipo de transacciones propias o interbancarias |
Se eligió este dataset ya que tiene gran cantidad de información misma que permite realizar un análisis de como es el comportamiento de los cajeros en todo el país y su distribución, así como ver la transaccionalidad de los mismos, y de las diferentes instituciones.
- Preparar la base de datos: Asegurarse de que los datos estén en un formato que sea fácilmente procesable por Neo4J. Si es necesario, utilizar una herramienta de conversión para convertir los datos a un formato compatible.
Antes de utilizar la base de datos, se realizó una limpieza de datos, eliminando registros nulos y de poca relevancia, el formato del archivo es un csv separado por comas, mismo que será subido a github para posteriormente cargarlo a neo4j.
[pic 2]
- Procesar la base de datos: Procesar la base de datos para generar relaciones y patrones previos a la carga de la herramienta de análisis de datos. La información puede ser utilizada de sistemas transaccionales y a partir de ellos procesarla para generar nodos y relaciones entre ellos. Asegurarse de que se incluyan todas las relaciones relevantes para el proyecto.
Las relaciones y los nodos que se tomaron e cuenta se realizó en base al flujo y transaccionalidad de los cajeros.
A continuación, se detalla los nodos y relaciones creadas:
Nodos:
- MERGE (c:prov {provincia:row.PROVINCIA})
- MERGE (d:dispositivo {dispositivo:row.DISPOSITIVO})
- MERGE (tu:tipo_ubic {tipoubicacion:row.TIPO_UBICACION})
- MERGE (m:marca {marca:row.MARCA})
- MERGE (tp:tipo_disp {tipodispositivo:row.TIPO_DISPOSITIVO})
- MERGE (tipotrx:tipotrx {tipotrx:row.TIPO})
- MERGE (e:estado_trx {estadotrx:row.ESTADO_TRX})
- MERGE (g:grupo_trx {grupotrx:row.GRUPO_TRX})
- MERGE (iadq:inst_adq {institucionadq:row.INSTITUCION_ADQUIRENTE})
- MERGE (iaut:inst_aut {institucionaut:row.INSTITUCION_AUTORIZADORA})
- MERGE (ti:tipo_inst {tipoinstitucion:row.TIPO_INSTITUCION})
Relaciones:
- MERGE (d)-[r:PERTENECA_A]->(c)
- MERGE (d)-[r1:SE_UBICA_EN]->(tu)
- MERGE (d)-[r2:SU_MARCA_ES]->(m)
- MERGE (m)-[r3:TIPO_DISPOSITIVO]->(tp)
- MERGE (d)-[r4:TIPO_TRANSACCION]->(tipotrx)
- MERGE (tipotrx)-[r5:ESTADO]->(e)
- MERGE (tipotrx)-[r6:GRUPO]->(g)
- MERGE (d)-[r7:ADQUIERE_EN]->(iadq)
- MERGE (iaut)-[r8:AUTORIZA]->(iadq)
- MERGE (iadq)-[r9:TIPO_INSTITUCION]->(ti)
- Instalar Neo4J: Instalar Neo4J en su computadora o en la nube. Si está utilizando la versión de nube, asegurarse de tener las credenciales de acceso a la cuenta.
El proyecto se desarrollo en neo4j sandboox en la nube. Se selecciono una proyecto en blanco para poder empezar a cargar los datos.
[pic 3]
Como se puede ver en la siguiente imagen, la conexión se realizó de manera correcta
[pic 4]
Una vez realizada la conexión en neo4j , el proceso de carga de datos se lo realizó mediante github. A continuación, se detalla este proceso.
- Abrir una cuenta de en github
- Crear un nuevo proyecto, para este caso el proyecto se lo denominó archivo
- Seleccionar la opción add file, y seleccionar el set de datos
[pic 5]
- Seleccionar el archivo para poder visualizar que los datos se vean correctamente
[pic 6]
- Seleccionar la opción raw
[pic 7]
- Aquí se abrirá una nueva pestaña, donde estará todo el set de datos y el link que se debe utilizar para cargar la información en Neo4j
[pic 8]
- Una vez obtenido el link, ejecutamos el siguiente código en neo4j para poder cargar el data set y realizar la generación de los nodos con sus respectivas relaciones.
[pic 9]
[pic 10]
- Cargar la base de datos en Neo4J: Una vez instalado, cargar la base de datos previamente generada en Neo4J. Asegurarse de que todos los nodos y relaciones estén correctamente cargados en la base de datos.
Una vez cargada la información correctamente en la herramienta de neo4j , se puede visualizar las relaciones y nodos creados
[pic 11]
- Analizar los datos: Utilizar los comandos aprendidos en clase para analizar los datos en Neo4J. Realizar consultas para obtener información relevante y útil para el proyecto.
A continuación, se detalla todas las relaciones y consultas que se aplicaron con la base de datos cargadas.
- Ver todos los nodos y relaciones: match(n) return n
[pic 12]
- Visualizar las ubicaciones existentes y la distribución de los dispositivos: MATCH p=(dispositivo)-[r:SE_UBICA_EN]->(prov) RETURN p
[pic 13]
- Distribución de los dispositivos por provincia: MATCH p=(dispositivo)-[r:PERTENECA_A]->(prov) RETURN p
[pic 14]
- Ver las provincias que tienen mayor número de cajeros: MATCH (c:prov) OPTIONAL MATCH (d:dispositivo)-[:PERTENECA_A]->(c) RETURN c.provincia, count(d) AS totalDispositivos
ORDER BY totalDispositivos DESC
[pic 15]
- Visualizar la distribución de los cajeros y determinar si existe cajeros relacionados con mas de una provincia:
MATCH (d:dispositivo)-[:PERTENECA_A]->(p1:prov)
MATCH (d:dispositivo)-[:PERTENECA_A]->(p2:prov)
WHERE p1 <> p2
...