TransWikia.com

How do I generate a laplacian matrix for a graph dataset?

Data Science Asked by Naveed on February 3, 2021

If I have a dataset in a csv that looks like the one shown below.

How do I convert this into a laplacian matrix using Python?

enter image description here

2 Answers

Well the Laplacian matrix is achieved by:

$degree (v_i) $ for $space$ i=j

$-1$ for $space$ if $v_j$ and $v_i$ are not adjacent to each other

$0$ otherwise


First, you need to store your file to a 2d-array Then you need to define another 2d-array matrix the same size of your first matrix. Then loop over the elements to fill the Laplacian matrix

import pandas as pd
data = pd.read_csv('data.csv')
df = pd.Dataframe(data)
M = df.as_matrix()
L = np.zeros(df.shape[0], df.shape[1]) #shape[0] and shape[1] should be equal

Then for each element $A_{i,j}$ we calculate their corresponding value in L

for i in range(len(df.shape[0])):
    for j in range(len(df.shape[0])): # or shape[1]
        if M[i][j] == 0 and M[j][i]== 0:
            L[i][j] = -1
        if i == j:
            L[i][j] = sum(M[i][:])
        else:
            L[i][j] = 0

I haven't tried the code so consider it much like a pseudo-code.

Answered by Fatemeh Asgarinejad on February 3, 2021

Use SciPy's Laplacian function:

import numpy as np
from scipy.sparse.csgraph import laplacian

g = np.array([[1, 0, 0, 0],
              [0, 1, 0, 1],
              [0, 0, 0, 1],
              [0, 1, 1, 1]])

laplacian(g)

Answered by Brian Spiering on February 3, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP