← Todas las entradas
01 feb 2020Matías Aguirre

Empezar con Machine Learning y Neo4j

Aprende a integrar flujos de trabajo de machine learning basados en Python con la base de datos de grafos Neo4j para obtener conocimientos más inteligentes.

machine learningneo4jpythonbase de datos de grafos
Gráfico con machine learning
Gráfico con machine learning

Introducción

Neo4j, una base de datos de grafos popular, ofrece ventajas únicas al trabajar con datos conectados. Al combinar estas estructuras de grafos con el poder de las bibliotecas de machine learning de Python como Scikit-learn, podemos obtener conocimientos más profundos y construir modelos más inteligentes.

En este artículo aprenderás cómo empezar con un flujo de trabajo de machine learning que extrae datos desde Neo4j, los procesa en Python y realiza predicciones o clasificaciones utilizando modelos populares de ML.

Paso 1: Obtener datos desde Neo4j

Utiliza el driver oficial de Python neo4j para conectarte a tu base de datos y obtener los datos. Por ejemplo, podemos ejecutar una consulta que obtenga nodos y sus propiedades:

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

def get_data(tx):
    query = "MATCH (p:Persona)-[:TIENE_RELACION]->(a:Actividad) RETURN p.nombre AS nombre, a.tipo AS actividad"
    return list(tx.run(query))

with driver.session() as session:
    resultados = session.read_transaction(get_data)

Paso 2: Preparar los datos

Una vez que los datos están disponibles, deben transformarse a un formato adecuado para Scikit-learn. A menudo esto significa convertir variables categóricas en numéricas con one-hot encoding y manejar valores faltantes.

import pandas as pd
df = pd.DataFrame(resultados)
df = pd.get_dummies(df)

Paso 3: Entrenar el modelo de ML

Con los datos preparados, podemos entrenar un modelo. Aquí usamos, por ejemplo, un clasificador Random Forest:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

X = df.drop("actividad_deporte", axis=1)
y = df["actividad_deporte"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

clf = RandomForestClassifier()
clf.fit(X_train, y_train)

Paso 4: Interpretar los resultados

Una vez entrenado el modelo, podemos evaluar su desempeño usando un informe de clasificación o una curva ROC. Estos insights ayudan a refinar el modelo o comprender mejor los datos.

Conclusión

La combinación de Neo4j y las herramientas de machine learning de Python ofrece potentes posibilidades para aprovechar datos conectados en tareas de predicción y análisis. Al transformar estructuras de grafos en características, puedes usar modelos tradicionales de ML para obtener conocimientos valiosos.

¿Quieres profundizar más? Revisa nuestros otros artículos sobre ML con grafos y técnicas de embeddings con Neo4j.

Compartir
Siguiente paso

¿Listo para Iniciar su Proyecto?

Hablemos sobre cómo la tecnología puede transformar su organización. Ofrecemos consultas técnicas y soluciones a medida adaptadas a requisitos institucionales. Agende una sesión estratégica sin compromiso.

Hablemos
Consulta gratuitaSin compromisoRespuesta rápida