← Alle berichten
01 feb 2020Matías Aguirre

Aan de slag met Machine Learning en Neo4j

Leer hoe je Python-gebaseerde machine learning-workflows integreert met Neo4j’s grafendatabase voor slimmere inzichten.

machine learningneo4jpythongrafendatabase
Grafiek met machine learning
Grafiek met machine learning

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.

Delen
Volgende stap

Klaar om Uw Project te Starten?

Laten we bespreken hoe technologie uw organisatie kan transformeren. Wij bieden technische consultaties en maatwerkoplossingen afgestemd op institutionele vereisten. Plan een vrijblijvend strategisch gesprek.

Neem contact op
Gratis consultatieVrijblijvendSnelle reactie