Skip to main content

Learning from and reconstructing networks using Nonnegative Matrix Factorization

Project description



Learning from and reconstructing networks using MCMC motif sampling and Nonnegative Matrix Factorization


To install the Network Dictionary Learning package, run this command in your terminal:

$ pip install ndlearn

This is the preferred method to install Network Dictionary Learning. If you don't have pip installed, these installation instructions can guide you through the process.


Our package lies on the backbone of the NNetwork class (see

>>> from ndl import Wtd_NNetwork
>>> G = Wtd_NNetwork()
>>> G.load_add_edges_wtd("example.txt", use_genfromtxt=True, delimiter=",")

Learning a Dictionary

>>> from ndl import NetDictLearner
>>> NDL = NetDictLearner(G=G, n_components=25, k=21)
>>> NDL.train_dict()
>>> W = NDL.get_dictionary()

Display and save the learned dictionary:

>>> NDL.display_dict(path="example_dict.npy")

Replace the dictionary with a pre-trained dictionary and/or replace the network:

>>> NDL.set_dict(W)
>>> NDL.set_network(G)

Reconstructing a Network

>>> G_recons = NDL.reconstruct(recons_iter=10000)

The NetDictLearner class provices the base code to perform network dictionary learning and network reconstruction, but we also provide a series of helper fuctions to use alongside the NetDictLearner class to assist on performing tasks related to Network Dictionary Learning and evaluate performance.

Measure Accuracy of Reconstruction (Jaccard)

>>> from ndl import utils
>>> utils.recons_accuracy(G, G_recons)

Network Denoising Application

To add positive corruption (overlaying edges) or negative corruption (deleting edges) from a networks:

>>> len(G.edges())
>>> G_add = utils.corrupt(G, p=0.1, noise_type="ER")
>>> G_remove_10 = utils.corrupt(G, p=0.1, noise_type="negative")

To measure the AUC of network denoising with positive (or negative) noise:

>>> G_corrupt = utils.corrupt(G, p=0.1, noise_type="ER")
>>> NDL_corrupt = NetDictLearner(G=G_corrupt)
>>> NDL_corrupt.train_dict()
>>> G_corrupt_recons = NDL_corrupt.reconstruct(recons_iter=10000)
>>> utils.auc(original=G, corrupt=G_corrupt, corrupt_recons=G_corrupt_recons, type="positive")

Project details

Download files

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

Files for ndlearn, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size ndlearn-0.0.2-py2.py3-none-any.whl (24.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size ndlearn-0.0.2.tar.gz (24.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page