Aan de slag met Machine Learning en Neo4j
Leer hoe je Python-gebaseerde machine learning-workflows integreert met Neo4j’s grafendatabase voor slimmere inzichten.


Inleiding
Neo4j, een populaire grafendatabase, biedt unieke voordelen bij het werken met verbonden gegevens. Wanneer we deze grafstructuren combineren met de kracht van Python’s machine learning-bibliotheken zoals Scikit-learn, kunnen we diepere inzichten verkrijgen en slimmere modellen bouwen.
In dit artikel leer je hoe je aan de slag kunt met een machine learning-workflow die gegevens haalt uit Neo4j, ze verwerkt in Python, en voorspellingen doet of classificaties maakt met behulp van populaire ML-modellen.
Stap 1: Gegevens ophalen uit Neo4j
Gebruik de officiële neo4j Python-driver om verbinding te maken met je Neo4j-database en gegevens op te halen. We kunnen bijvoorbeeld een query uitvoeren die knooppunten en hun eigenschappen ophaalt:
from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))
def get_data(tx):
query = "MATCH (p:Persoon)-[:HEEFT_RELATIE]->(a:Activiteit) RETURN p.naam AS naam, a.type AS activiteit"
return list(tx.run(query))
with driver.session() as session:
resultaten = session.read_transaction(get_data)
Stap 2: Voorbereiden van de gegevens
Zodra de gegevens beschikbaar zijn, moeten ze worden getransformeerd naar een geschikt formaat voor Scikit-learn. Vaak betekent dit dat categorische variabelen worden omgezet naar numerieke via one-hot encoding, en dat missende waarden worden ingevuld of verwijderd.
import pandas as pd
df = pd.DataFrame(resultaten)
df = pd.get_dummies(df)
Stap 3: ML-model trainen
Met de voorbereide gegevens kunnen we een model trainen. Hier gebruiken we bijvoorbeeld een Random Forest Classifier:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
X = df.drop("activiteit_sport", axis=1)
y = df["activiteit_sport"]
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)
Stap 4: Resultaten interpreteren
Nadat het model is getraind, kunnen we de prestaties evalueren met een classificatierapport of een ROC-curve. Deze inzichten helpen om het model te verfijnen of de gegevens beter te begrijpen.
Conclusie
De combinatie van Neo4j en Python’s machine learning-tools biedt krachtige mogelijkheden om verbonden gegevens te benutten voor voorspelling en analyse. Door grafstructuren om te zetten in features, kun je traditionele ML-modellen gebruiken om waardevolle inzichten te verkrijgen.
Wil je nog dieper duiken? Bekijk onze andere artikelen over graph ML en embedding-technieken met Neo4j.