Skip to main content

Graph Embedding Models

Project description

Graph Embedding

Introduction

This module provides the services and implementation for various graph embedding models.

Getting Started

Installation

You can install the DGLL Graph Embedding version 1.0.3 from PyPI as:

pip install dgllge

Usage and Tutorial

input graph

# import module
import ge


# Set Path to Data
data_dir = "Your Path to Data"
dataset = "File/Dataset Name"


# Load a Graph
inputGraph = ge.loadGraph(data_dir, dataset)

Configurable Parameter for Graph Embedding

embedDim = 2 # embedding size
numbOfWalksPerVertex = 2 # walks per vertex
walkLength = 4 # walk lenght
lr =0.025 # learning rate
windowSize = 3 # window size

Choose One of the Following Graph Embedding Models

# DeepWalk
rw = ge.DeepWalk(inputGraph, walkLength=walkLength, embedDim=embedDim, numbOfWalksPerVertex=numbOfWalksPerVertex, \
              windowSize=windowSize, lr = lr)
              
# Node2Vec
rw = ge.Node2vec(inputGraph, walkLength=walkLength, embedDim=embedDim, numbOfWalksPerVertex=numbOfWalksPerVertex, \
               windowSize=windowSize, lr=lr, p = 0.5, q = 0.8)
# Struc2Vec
rw = ge.Struc2Vec(inputGraph, walkLength=walkLength, embedDim=embedDim, numbOfWalksPerVertex=numbOfWalksPerVertex, \
              windowSize=windowSize, lr = lr)

Skip Gram model

modelSkipGram = ge.SkipGramModel(rw.totalNodes, rw.embedDim)

Want Node Embedding or Edge Embedding

# Learning Node Embedding
model = rw.learnNodeEmbedding(modelSkipGram)
# Learning Edge Embedding
model = rw.learnEdgeEmbedding(modelSkipGram)

Plot Embedding

ge.plot_2DEmbedding(rw)

Save Embedding to Disk

ge.saveEmbedding(data_dir, dataset, rw)

Generate Embedding for a Specific Node or Edge

node1 = 35
node2 = 40

# Get Embedding for a node
emb = rw.getNodeEmbedding(node1)
print("Node Embedding", emb)

# Get Embedding for an edge
emb = rw.getEdgeEmbedding(node1, node2)
print("Edge Embedding", emb)

Utilize embedding for training classification models/classifiers

# import modules
import ge
import numpy as np
import scipy.sparse as sp

Load Embedding

idsEmbeddingClsLabels = np.genfromtxt("cora.embedding", dtype=np.dtype(str))

Prepare data for training

labels = idsEmbeddingClsLabels[:, -1]
embedding = sp.csr_matrix(idsEmbeddingClsLabels[:, 1:-1], dtype=np.float32)
tr = ge.TrainingClassifiers()
y = tr.labelEnocder(labels)

Prepare Train test data

X_train, X_test, y_train, y_test = tr.prepareTrainTestData(embedding, labels, 0.33)

Choose one of the following classifier for training a classifier

y_pred = tr.applyDecisionTree(X_train.toarray(), y_train, X_test.toarray())
y_pred = tr.applyLogistic(X_train.toarray(), y_train, X_test.toarray())
y_pred = tr.applyRandomForest(X_train.toarray(), y_train, X_test.toarray())
y_pred = tr.apply_GradientBoosting(X_train.toarray(), y_train, X_test.toarray())
y_pred = tr.applyMLP(X_train.toarray(), y_train, X_test.toarray())

Get Accuracy

print("Accuracy:", tr.accuracy(y_test, y_pred))

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Acknowledgments

(back to top)

Links

Project's GitHub Link: @Graph-Embedding

Project's PyPI Link: @dgllge

(back to top)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dgllge-1.0.3.tar.gz (12.4 kB view hashes)

Uploaded Source

Built Distribution

dgllge-1.0.3-py3-none-any.whl (17.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page