Skip to main content

dnmf-python

Unofficial Python implementation of the Discrete Non-negative Matrix Factorization (DNMF) overlapping community detection algorithm


Paper

Ye, Fanghua, Chuan Chen, Zibin Zheng, Rong-Hua Li, and Jeffrey Xu Yu. 2019. “Discrete Overlapping Community Detection with Pseudo Supervision.” In 2019 IEEE International Conference on Data Mining (ICDM), 708–17. https://doi.org/10.1109/ICDM.2019.00081.

Official implementation in MATLAB at https://github.com/smartyfh/DNMF.


Requirements

  • python>=3.7.1
  • torch>=1.9.1

Quick start

  • To install the package run one of the two commands:

    • python -m pip install dnmf-python (installation from PyPI)
    • python setup.py install (compile from source, if cloned the repository)
  • To run the algorithm, load the graph adjacency matrix into a torch.FloatTensor (for ex. A), then call:

    from dnmf.DNMF import DNMF
    dnmf = DNMF()
    F = dnmf(A)
    
  • To run a quick test of the algorithm with an example graph, run python test.py from inside the src/dnmf/ directory


Config

The DNMF module supports the following hyperparameters as arguments:

  • alpha: tradeoff parameter for the U-subproblem
  • beta: tradeoff parameter for the F-subproblem
  • gamma: regularization parameter
  • k: desired number of overlapping communities
  • num_outer_iter: number of iterations for the outer loop (SDP iterations)
  • num_inner_iter: number of iterations for the inner loops (U and F subproblems)

How to cite

If you used dnmf-python for work on your paper please use the following BibTeX entry to cite this software:

@misc{janchevski_dnmf_2021,
  title        = "dnmf-python",
  author       = "{Janchevski, Andrej}",
  howpublished = "\url{https://github.com/Bani57/dnmf-python}",
  year         = 2021,
  note         = "Unofficial Python implementation of the Discrete Non-negative Matrix Factorization (DNMF) overlapping community detection algorithm"
}

Author

Andrej Janchevski

andrej.janchevski@epfl.ch

EPFL STI IEM LIONS

Lausanne, Switzerland

Release files for dnmf-python 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dnmf-python 0.0.3
File Size Uploaded
dnmf-python-0.0.3.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dnmf-python 0.0.3
File Interpreter ABI Platform
dnmf_python-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 9.7 kB

Release files / dnmf-python-0.0.3.tar.gz

Download URL dnmf-python-0.0.3.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0c596b3af29e99ba3942cfd6899c057440e7a13bc515d0788a639b2960ea62c7
BLAKE2b-256 checksum
How to use checksums
a7138785e8aa63bf4978bc61abc4406a1ac7f3ab780714d540f139476e44a67e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.1 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.1

Release files / dnmf_python-0.0.3-py3-none-any.whl

Download URL dnmf_python-0.0.3-py3-none-any.whl
Size 5.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51f79d44bc73eb6946ac9412a2b0d8be27e224a51e23fc8006e3a2d64d891fb2
BLAKE2b-256 checksum
How to use checksums
9a2c48f5aaf892f384cd60eddef884fce1e6976bdfbfc6edff23b3ec14b9496a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.1 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page