StellarGraph Machine Learning Library
Table of Contents
 Introduction
 Guiding Principles
 Getting Started
 Installation
 Running the examples
 Algorithms
 Getting Help
 Discourse Community
 CI
 Citing
 References
Introduction
StellarGraph is a Python library for machine learning on graphstructured (or equivalently, networkstructured) data.
Graphstructured data represent entities, e.g., people, as nodes (or equivalently, vertices), and relationships between entities, e.g., friendship, as links (or equivalently, edges). Nodes and links may have associated attributes such as age, income, and time when a friendship was established, etc. StellarGraph supports analysis of both homogeneous networks (with nodes and links of one type) and heterogeneous networks (with more than one type of nodes and/or links).
The StellarGraph library implements several stateoftheart algorithms for applying machine learning methods to discover patterns and answer questions using graphstructured data.
The StellarGraph library can be used to solve tasks using graphstructured data, such as:
 Representation learning for nodes and edges, to be used for visualisation and various downstream machine learning tasks;
 Classification and attribute inference of nodes or edges;
 Link prediction.
We provide examples of using StellarGraph
to solve
such tasks using several realworld datasets.
Guiding Principles
StellarGraph uses the Keras library and adheres to the same guiding principles as Keras: userfriendliness, modularity, and easy extendability. Modules and layers of StellarGraph library are designed so that they can be used together with standard Keras layers and modules, if required. This enables flexibility in using existing or creating new models and workflows for machine learning on graphs.
Getting Started
To get started with StellarGraph you'll need data structured as a homogeneous or heterogeneous graph, including attributes for the entities represented as graph nodes. NetworkX is used to represent the graph and Pandas or Numpy are used to store node attributes.
Detailed and narrated examples of various machine learning workflows on network data, supported by StellarGraph, from data ingestion into graph structure to inference, are given in the demos
directory of this repository.
Installation
StellarGraph is a Python 3 library and requires Python version 3.6 to function (note that the library uses Keras with the Tensorflow backend, and thus does not currently work in python 3.7). The required Python version can be downloaded and installed from python.org. Alternatively, use the Anaconda Python environment, available from anaconda.com.
The StellarGraph library can be installed in one of two ways, described next.
Install StellarGraph using pip:
To install StellarGraph library from PyPi using pip
, execute the following command:
pip install stellargraph
Some of the examples require installing additional dependencies as well as stellargraph
.
To install these dependencies using pip
, execute the following command:
pip install stellargraph[demos]
Install StellarGraph from Github source:
First, clone the StellarGraph repository using git
:
git clone https://github.com/stellargraph/stellargraph.git
Then, cd
to the StellarGraph folder, and install the library by executing the following commands:
cd stellargraph
pip install r requirements.txt
pip install .
Running the examples
See the README in the demos
directory for more information about the examples and how to run them.
Algorithms
The StellarGraph library currently includes the following algorithms for graph machine learning:

GraphSAGE [1]
 Supports supervised as well as unsupervised representation learning, node classification/regression, and link prediction for homogeneous networks. The current implementation supports multiple aggregation methods, including mean, maxpool, meanpool, and attentional aggregators.

HinSAGE
 Extension of GraphSAGE algorithm to heterogeneous networks. Supports representation learning, node classification/regression, and link prediction/regression for heterogeneous graphs. The current implementation supports mean aggregation of neighbour nodes, taking into account their types and the types of links between them.

GAT
 Graph ATtention Network algorithm [4] for homogeneous graphs. The implementation supports representation learning and node classification for homogeneous graphs.

GCN
 Graph Convolutional Network algorithm [5] for homogeneous graphs. The implementation supports representation learning and node classification for homogeneous graphs.

SGC
 Simplified Graph Convolutional network algorithm [6] for homogeneous graphs. The implementation supports representation learning and node classification for homogeneous graphs.

Node2Vec [2]
 Unsupervised representation learning for homogeneous networks, taking into account network structure while ignoring node attributes. The node2vec algorithm is implemented by combining StellarGraph's random walk generator with the word2vec algorithm from Gensim. Learned node representations can be used in downstream machine learning models implemented using Scikitlearn, Keras, Tensorflow or any other Python machine learning library.

Metapath2Vec [3]
 Unsupervised, metapathguided representation learning for heterogeneous networks, taking into account network structure while ignoring node attributes. The implementation combines StellarGraph's metapathguided random walk generator and Gensim word2vec algorithm. As with node2vec, the learned node representations (node embeddings) can be used in downstream machine learning models to solve tasks such as node classification, link prediction, etc, for heterogeneous networks.
Getting Help
Documentation for StellarGraph can be found here.
Discourse Community
Feel free to ask questions and discuss problems on the StellarGraph Discourse forum.
CI
buildkite integration
Pipeline is defined in .buildkite/pipeline.yml
Docker images
 Tests: Uses the official python:3.6 image.
 Style: Uses black from the
stellargraph
docker hub organisation.
Citing
StellarGraph is designed, developed and supported by CSIRO's Data61. If you use any part of this library in your research, please cite it using the following BibTex entry
@misc{StellarGraph,
author = {CSIRO's Data61},
title = {StellarGraph Machine Learning Library},
year = {2018},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/stellargraph/stellargraph}},
}
References

Inductive Representation Learning on Large Graphs. W.L. Hamilton, R. Ying, and J. Leskovec arXiv:1706.02216 [cs.SI], 2017. (link)

Node2Vec: Scalable Feature Learning for Networks. A. Grover, J. Leskovec. ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 2016. (link)

Metapath2Vec: Scalable Representation Learning for Heterogeneous Networks. Yuxiao Dong, Nitesh V. Chawla, and Ananthram Swami. ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 135–144, 2017 (link)

Graph Attention Networks. P. Velickovic et al. ICLR 2018 (link)

Graph Convolutional Networks (GCN): SemiSupervised Classification with Graph Convolutional Networks. Thomas N. Kipf, Max Welling. International Conference on Learning Representations (ICLR), 2017 (link)

Simplifying Graph Convolutional Networks. F. Wu, T. Zhang, A. H. de Souza, C. Fifty, T. Yu, and K. Q. Weinberger. arXiv:1902.07153. (link)