Skip to content

[PyPi Package] Learning from and reconstructing networks using Nonnegative Matrix Factorization

License

Notifications You must be signed in to change notification settings

jvendrow/Network-Dictionary-Learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Network-Dictionary-Learning

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

PyPI Version Supported Python Versions Downloads

By Hanbaek Lyu, Joshua Vendrow, and Yacoub Kureh.

Installation

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.

Usage

Our package lies on the backbone of the NNetwork class (see https://github.com/HanbaekLyu/NNetwork).

>>> 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.W

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)
0.92475345

Network Denoising Application

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

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

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")
0.864578

About

[PyPi Package] Learning from and reconstructing networks using Nonnegative Matrix Factorization

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages