Skip to content

brandones/graphpca

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e614f66 · May 29, 2024

History

48 Commits
May 29, 2024
Jun 27, 2020
May 29, 2024
Jun 27, 2020
Sep 3, 2016
May 20, 2024
Jun 27, 2020
Jun 18, 2016
Jun 18, 2016
May 20, 2024
May 29, 2024
Jun 27, 2020
Jun 27, 2020
Sep 4, 2016
May 29, 2024
May 20, 2024
May 29, 2024
May 29, 2024
Jun 27, 2020
Jun 27, 2020

Repository files navigation

GraphPCA

Produces a low-dimensional representation of the input graph.

Calculates the ECTD [1] of the graph and reduces its dimension using PCA. The result is an embedding of the graph nodes as vectors in a low-dimensional space.

Graph data in this repository is courtesy of University of Florida Sparse Matrix Collection.

Python 3.x and 2.6+.

See the API docs: https://brandones.github.io/graphpca/

Usage

Draw a graph, including edges, from a mat file

>>> import scipy.io
>>> import networkx as nx
>>> import graphpca
>>> mat = scipy.io.loadmat('test/bcspwr01.mat')
>>> A = mat['Problem'][0][0][1].todense()  # that's just how the file came
>>> G = nx.from_numpy_array(A)
>>> graphpca.draw_graph(G)

output/bcspwr01-drawing.png

Get a 2D PCA of a high-dimensional graph and plot it.

>>> import networkx as nx
>>> import graphpca
>>> g = nx.erdos_renyi_graph(1000, 0.2)
>>> g_2 = graphpca.reduce_graph(g, 2)
>>> graphca.plot_2d(g_2)

output/erg-1000.png

Contributing

Issues and Pull requests are very welcome! [On GitHub](https://github.com/brandones/graphpca).

[1]https://www.info.ucl.ac.be/~pdupont/pdupont/pdf/ecml04.pdf