In [ ]:
# Importing libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# In Numpy we have a module linalg which can be used to find eigenvalues and vectors
from numpy import linalg
In [1]:
# Connect to google
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
In [ ]:
# Making the data for graph 1, which has only 6 nodes

data1={'1':[2,-1,-1,0,0,0],'2':[-1,2,-1,0,0,0],'3':[-1,-1,3,-1,0,0],'4':[0,0,-1,3,-1,-1],'5':[0,0,0,-1,2,-1],'6':[0,0,0,-1,-1,2]}
In [ ]:
# Changing the data to a dataframe
df1=pd.DataFrame(data1,index=[1,2,3,4,5,6])
In [ ]:
df1
Out[ ]:
1 2 3 4 5 6
1 2 -1 -1 0 0 0
2 -1 2 -1 0 0 0
3 -1 -1 3 -1 0 0
4 0 0 -1 3 -1 -1
5 0 0 0 -1 2 -1
6 0 0 0 -1 -1 2
In [ ]:
# Printing the eigenvalues
# linalg.eigvals() is used to find the eigenvalues of a matrix
print(linalg.eigvals(df1))
[ 4.56155281e+00 -1.99901553e-16  4.38447187e-01  3.00000000e+00
  3.00000000e+00  3.00000000e+00]
In [ ]:
# Printing eigenvalues
# linalg.eig() is used to find the eigenvalues and vectors of a matrix
linalg.eig(df1)
Out[ ]:
EigResult(eigenvalues=array([ 4.56155281e+00, -1.99901553e-16,  4.38447187e-01,  3.00000000e+00,
        3.00000000e+00,  3.00000000e+00]), eigenvectors=array([[ 0.18452409, -0.40824829,  0.46470513,  0.3776621 , -0.75589352,
         0.04012623],
       [ 0.18452409, -0.40824829,  0.46470513, -0.73429428,  0.46340301,
         0.23834658],
       [-0.6571923 , -0.40824829,  0.26095647,  0.35663218,  0.29249051,
        -0.27847281],
       [ 0.6571923 , -0.40824829, -0.26095647,  0.35663218,  0.29249051,
        -0.27847281],
       [-0.18452409, -0.40824829, -0.46470513, -0.18873173, -0.14796098,
        -0.47220166],
       [-0.18452409, -0.40824829, -0.46470513, -0.16790045, -0.14452953,
         0.75067448]]))

For the Second network¶

In [ ]:
# Making a list for each code, representing to whom it is connected.

l1=[3,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
l2=[-1,3,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
l3=[-1,-1,4,-1,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0]
l4=[-1,-1,-1,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
l5=[0,0,0,-1,2,0,-1,0,0,0,0,0,0,0,0,0,0,0,0]
l6=[0,0,0,0,0,3,-1,-1,-1,0,0,0,0,0,0,0,0,0,0]
l7=[0,0,0,0,-1,-1,4,-1,-1,0,0,0,0,0,0,0,0,0,0]
l8=[0,0,0,0,0,-1,-1,4,-1,0,-1,0,0,0,0,0,0,0,0]
l9=[0,0,0,0,0,-1,-1,-1,3,0,0,0,0,0,0,0,0,0,0]
l10=[0,0,-1,0,0,0,0,0,0,2,0,0,-1,0,0,0,0,0,0]
l11=[0,0,0,0,0,0,0,-1,0,0,2,0,0,0,0,0,-1,0,0]
l12=[0,0,0,0,0,0,0,0,0,0,0,3,-1,-1,-1,0,0,0,0]
l13=[0,0,0,0,0,0,0,0,0,-1,0,-1,4,-1,-1,0,0,0,0]
l14=[0,0,0,0,0,0,0,0,0,0,0,-1,-1,3,-1,0,0,0,0]
l15=[0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,4,-1,0,0,0]
l16=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,4,-1,-1,-1]
l17=[0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,-1,4,-1,-1]
l18=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,3,-1]
l19=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,3]
In [ ]:
# Making the data
data2={'1':l1,'2':l2,'3':l3,'4':l4,'5':l5,'6':l6,'7':l7,'8':l8,'9':l9,'10':l10,'11':l11,'12':l12,'13':l13,'14':l14,'15':l15,'16':l16,'17':l17,'18':l18,'19':l19}
In [ ]:
# Changing the data to a dataframe
df2=pd.DataFrame(data2,index=np.arange(1,20))
In [ ]:
df2
Out[ ]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1 3 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 -1 3 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 -1 -1 4 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0
4 -1 -1 -1 4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 -1 2 0 -1 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 3 -1 -1 -1 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 -1 -1 4 -1 -1 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 -1 -1 4 -1 0 -1 0 0 0 0 0 0 0 0
9 0 0 0 0 0 -1 -1 -1 3 0 0 0 0 0 0 0 0 0 0
10 0 0 -1 0 0 0 0 0 0 2 0 0 -1 0 0 0 0 0 0
11 0 0 0 0 0 0 0 -1 0 0 2 0 0 0 0 0 -1 0 0
12 0 0 0 0 0 0 0 0 0 0 0 3 -1 -1 -1 0 0 0 0
13 0 0 0 0 0 0 0 0 0 -1 0 -1 4 -1 -1 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 -1 -1 3 -1 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 4 -1 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 4 -1 -1 -1
17 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 4 -1 -1
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 3 -1
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 3
In [ ]:
# Printing the eigenvalues
# linalg.eigvals() is used to find the eigenvalues of a matrix
eigen_values=list(linalg.eigvals(df2))
eigen_values.sort() # .sort() is used to sort the eigenvalues, this is a function of the list data structure
print(eigen_values)
[-1.1102230246251565e-16, 0.19442236312567002, 0.22521976704218905, 0.5328898275356261, 1.524818682593799, 1.7790998659011588, 1.921959733764303, 3.999999999999999, 3.9999999999999996, 4.0, 4.000000000000001, 4.0000000000000036, 4.5898400611561705, 4.716703111193849, 4.829006199829191, 5.135568038830307, 5.2671949064644945, 5.506528070492063, 5.77674937207117]
In [ ]:
# Printing the eigenvalues
# linalg.eig() is used to find the eigenvalues and vectors of a matrix
linalg.eig(df2)
Out[ ]:
EigResult(eigenvalues=array([-1.11022302e-16,  1.94422363e-01,  2.25219767e-01,  5.32889828e-01,
        1.52481868e+00,  1.77909987e+00,  1.92195973e+00,  5.77674937e+00,
        5.50652807e+00,  5.26719491e+00,  5.13556804e+00,  4.58984006e+00,
        4.82900620e+00,  4.71670311e+00,  4.00000000e+00,  4.00000000e+00,
        4.00000000e+00,  4.00000000e+00,  4.00000000e+00]), eigenvectors=array([[-2.29415734e-01, -2.35981397e-01,  2.95836214e-01,
         2.21534761e-01,  4.31262930e-02,  1.58819955e-01,
         2.56047842e-01, -1.71706537e-02, -1.99957685e-02,
        -6.18785115e-02, -1.52572396e-01, -2.78244429e-01,
         8.14601886e-02, -2.24905891e-01, -7.07106781e-01,
         3.44709713e-02, -4.55127275e-03, -4.27866507e-02,
        -4.59797662e-02],
       [-2.29415734e-01, -2.35981397e-01,  2.95836214e-01,
         2.21534761e-01,  4.31262930e-02,  1.58819955e-01,
         2.56047842e-01, -1.71706537e-02, -1.99957685e-02,
        -6.18785115e-02, -1.52572396e-01, -2.78244429e-01,
         8.14601886e-02, -2.24905891e-01,  7.07106781e-01,
        -3.44709713e-02,  4.55127275e-03,  4.27866507e-02,
         4.59797662e-02],
       [-2.29415734e-01, -1.83229816e-01,  2.91166131e-01,
         1.53073551e-01,  1.65974359e-01, -7.44274222e-02,
         4.35777623e-02,  1.04125693e-01, -4.01778925e-01,
         4.95633339e-01,  1.33457893e-01,  3.20472682e-01,
         1.64481077e-01,  4.52892297e-01, -1.03405604e-15,
         2.14660072e-16, -3.10412675e-16, -2.28847919e-16,
         2.83576222e-16],
       [-2.29415734e-01, -2.42852916e-01,  2.33878135e-01,
         1.71942350e-01, -1.45481550e-01,  1.09510771e-01,
        -2.35957205e-02, -3.92764376e-02,  4.71894649e-01,
        -2.93464182e-01,  3.44943236e-01,  4.00135887e-01,
        -3.94932456e-01,  1.58110238e-01,  9.37530040e-16,
        -1.06343862e-16,  4.05967343e-16,  4.87863331e-16,
        -4.82178108e-16],
       [-2.29415734e-01, -2.69003018e-01,  2.44252869e-15,
        -2.37108701e-16, -6.12320159e-01, -5.77933697e-15,
        -6.04706304e-01, -2.12100819e-16, -2.69152073e-01,
        -9.57069417e-15, -2.20019615e-01,  3.03913772e-16,
        -1.11931471e-15, -1.16398614e-01, -4.94258864e-16,
         1.24446185e-16, -1.45274708e-16,  3.01998998e-16,
        -3.39474159e-16],
       [-2.29415734e-01, -2.35981397e-01, -2.95836214e-01,
        -2.21534761e-01,  4.31262930e-02, -1.58819955e-01,
         2.56047842e-01,  1.71706537e-02, -1.99957685e-02,
         6.18785115e-02, -1.52572396e-01,  2.78244429e-01,
        -8.14601886e-02, -2.24905891e-01,  6.70151102e-16,
        -2.81973455e-01, -1.97116611e-01, -5.68768516e-01,
         5.53686589e-01],
       [-2.29415734e-01, -2.42852916e-01, -2.33878135e-01,
        -1.71942350e-01, -1.45481550e-01, -1.09510771e-01,
        -2.35957205e-02,  3.92764376e-02,  4.71894649e-01,
         2.93464182e-01,  3.44943236e-01, -4.00135887e-01,
         3.94932456e-01,  1.58110238e-01, -5.56588753e-16,
        -3.61088347e-16, -3.16110798e-16, -8.09656313e-16,
         8.44307693e-16],
       [-2.29415734e-01, -1.83229816e-01, -2.91166131e-01,
        -1.53073551e-01,  1.65974359e-01,  7.44274222e-02,
         4.35777623e-02, -1.04125693e-01, -4.01778925e-01,
        -4.95633339e-01,  1.33457893e-01, -3.20472682e-01,
        -1.64481077e-01,  4.52892297e-01, -9.14823360e-16,
         9.39385851e-17, -2.63938518e-16, -7.91314049e-16,
         6.73496914e-16],
       [-2.29415734e-01, -2.35981397e-01, -2.95836214e-01,
        -2.21534761e-01,  4.31262930e-02, -1.58819955e-01,
         2.56047842e-01,  1.71706537e-02, -1.99957685e-02,
         6.18785115e-02, -1.52572396e-01,  2.78244429e-01,
        -8.14601886e-02, -2.24905891e-01,  7.83004215e-16,
         2.81973455e-01,  1.97116611e-01,  5.68768516e-01,
        -5.53686589e-01],
       [-2.29415734e-01,  1.75204182e-02,  2.73537592e-01,
        -8.42890072e-02,  4.70045596e-01, -5.92446553e-01,
        -3.97943619e-01, -1.11387515e-01,  1.73388117e-01,
        -2.10842838e-01, -1.91348961e-01, -3.26746555e-02,
         9.56562458e-02, -3.28877734e-02, -1.23096516e-17,
        -1.18606173e-16,  1.65427988e-16, -2.95808117e-16,
         2.77562118e-16],
       [-2.29415734e-01,  1.75204182e-02, -2.73537592e-01,
         8.42890072e-02,  4.70045596e-01,  5.92446553e-01,
        -3.97943619e-01,  1.11387515e-01,  1.73388117e-01,
         2.10842838e-01, -1.91348961e-01,  3.26746555e-02,
        -9.56562458e-02, -3.28877734e-02, -3.11895847e-16,
         2.33392913e-16,  1.42096690e-17,  2.87136567e-16,
        -3.40647605e-16],
       [-2.29415734e-01,  2.66720775e-01,  1.73312457e-01,
        -3.32240922e-01, -1.09337813e-01,  1.84900588e-01,
         8.09508111e-02,  7.56988942e-02,  4.57583690e-02,
        -1.25641617e-01, -1.12809121e-01,  1.08608750e-01,
         2.05130533e-01,  9.78141029e-02,  7.80287009e-18,
         1.76747011e-01,  6.91068857e-01, -2.30615576e-01,
         3.00076883e-01],
       [-2.29415734e-01,  2.14864292e-01,  1.94302980e-01,
        -2.76734810e-01,  5.73825267e-02, -5.64441007e-02,
        -7.46333883e-02,  3.16557035e-01, -2.06211375e-01,
         1.93231308e-01,  4.66529795e-01, -2.35850550e-01,
        -4.35093189e-01, -3.63545981e-01, -8.11651737e-17,
         2.65044748e-16,  1.32621289e-16,  3.18517339e-16,
        -5.53831404e-16],
       [-2.29415734e-01,  2.66720775e-01,  1.73312457e-01,
        -3.32240922e-01, -1.09337813e-01,  1.84900588e-01,
         8.09508111e-02,  7.56988942e-02,  4.57583690e-02,
        -1.25641617e-01, -1.12809121e-01,  1.08608750e-01,
         2.05130533e-01,  9.78141029e-02, -7.21515278e-17,
         3.36638512e-01, -6.64559049e-01,  9.52146099e-02,
        -3.97902030e-02],
       [-2.29415734e-01,  2.66720775e-01,  1.13288543e-01,
        -2.10699226e-01, -1.09337813e-01,  9.72886655e-02,
         8.09508111e-02, -6.02452786e-01,  4.57583690e-02,
         2.17264343e-01, -1.12809121e-01, -4.54287419e-02,
        -1.45222360e-01,  9.78141029e-02,  1.08373888e-16,
        -5.13385523e-01, -2.65098084e-02,  1.35400966e-01,
        -2.60286680e-01],
       [-2.29415734e-01,  2.66720775e-01, -1.13288543e-01,
         2.10699226e-01, -1.09337813e-01, -9.72886655e-02,
         8.09508111e-02,  6.02452786e-01,  4.57583690e-02,
        -2.17264343e-01, -1.12809121e-01,  4.54287419e-02,
         1.45222360e-01,  9.78141029e-02, -6.03579359e-17,
        -5.13385523e-01, -2.65098084e-02,  1.35400966e-01,
        -2.60286680e-01],
       [-2.29415734e-01,  2.14864292e-01, -1.94302980e-01,
         2.76734810e-01,  5.73825267e-02,  5.64441007e-02,
        -7.46333883e-02, -3.16557035e-01, -2.06211375e-01,
        -1.93231308e-01,  4.66529795e-01,  2.35850550e-01,
         4.35093189e-01, -3.63545981e-01,  7.33516049e-16,
        -5.09713654e-16,  3.61731067e-16,  2.01414237e-16,
        -2.52977850e-16],
       [-2.29415734e-01,  2.66720775e-01, -1.73312457e-01,
         3.32240922e-01, -1.09337813e-01, -1.84900588e-01,
         8.09508111e-02, -7.56988942e-02,  4.57583690e-02,
         1.25641617e-01, -1.12809121e-01, -1.08608750e-01,
        -2.05130533e-01,  9.78141029e-02, -5.50771358e-17,
         3.89223349e-01,  3.85218348e-02, -4.15019095e-01,
        -1.16465417e-01],
       [-2.29415734e-01,  2.66720775e-01, -1.73312457e-01,
         3.32240922e-01, -1.09337813e-01, -1.84900588e-01,
         8.09508111e-02, -7.56988942e-02,  4.57583690e-02,
         1.25641617e-01, -1.12809121e-01, -1.08608750e-01,
        -2.05130533e-01,  9.78141029e-02,  7.86342587e-17,
         1.24162175e-01, -1.20120264e-02,  2.79618129e-01,
         3.76752097e-01]]))
In [ ]:
e2 = []
for i in linalg.eig(df2)[1]:
    e2.append(i[1])
e3 = []
for i in linalg.eig(df2)[1]:
    e3.append(i[2])
plt.figure(figsize=(6,5))
sns.scatterplot(x=e2, y=e3)
plt.show()
No description has been provided for this image
In [ ]:
e7=[]
for i in linalg.eig(df2)[1]:
    e7.append(i[6])

e8=[]
for i in linalg.eig(df2)[1]:
    e8.append(i[7])

plt.figure(figsize=(6,5))
sns.scatterplot(x=e7,y=e8)
plt.show()
No description has been provided for this image
In [ ]:
# Convert notebook to html
!jupyter nbconvert --to html "/content/drive/MyDrive/MIT - Data Sciences/Colab Notebooks/Week Three - Making Sense of Unstructured Data/Optional Materials/The+Magic+of+Eigenvectors+-+Eigenvectors+and+Visualization+Notebook.ipynb"