PacktPublishing / Graph-Machine-Learning

Graph Machine Learning, published by Packt
MIT License
261 stars 140 forks source link

gf (GraphFactorization) not found #10

Open ctutum opened 1 year ago

ctutum commented 1 year ago

Hello,

I am using conda. I created a new environment called "new_env" with python=3.7.16 (I had to use an older version of Python because stellargraph was having difficulties with python>3.8) by:

conda create -n new_env python=3.7.16
conda activate new_env

then in the terminal where the new_env being active, I typed:

pip install -r requirements.txt

where the requirements.txt file include the following (from Chapter-3 in the book):

Jupyter==1.0.0
networkx==2.5
matplotlib==3.2.2
karateclub==1.0.19
node2vec==0.3.3
tensorflow==2.4.0
scikit-learn==0.24.0
git+https://github.com/palash1992/GEM.git
git+https://github.com/stellargraph/stellargraph.git

I have two questions. Question-1: When I run the "01_Shallow_Embeddings.ipynb" notebook given in Chapter-03, for the cell given below, I get the following error in GraphFactorization section:

from gem.embedding.gf import GraphFactorization
G = nx.barbell_graph(m1=10, m2=4)
draw_graph(G)
gf = GraphFactorization(d=2,  data_set=None,max_iter=10000, eta=1*10**-4, regu=1.0)
gf.learn_embedding(G)

Error: ./gf not found. Reverting to Python implementation. Please compile gf, place node2vec in the path and grant executable permission.

Do I go to site_packages in the active conda environment and compile/run a setup.py file in GEM library? Or do I need to clone GEM library (as well as stellar) separate;y rather than putting them in the requirements.txt file, though I thought it is the same procedure.

Question-2: I have also an error when I run the DeepWalk example in the same notebook, The code:

import networkx as nx
from karateclub.node_embedding.neighbourhood.deepwalk import DeepWalk
G = nx.barbell_graph(m1=10, m2=4)
draw_graph(G)
dw = DeepWalk(dimensions=2)
dw.fit(G)

The error I get:

TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_22368\195704241.py in <module>
      6 
      7 dw = DeepWalk(dimensions=2)
----> 8 dw.fit(G)

~\anaconda3\envs\gml_book_ch3\lib\site-packages\karateclub\node_embedding\neighbourhood\deepwalk.py in fit(self, graph)
     57                          min_count=self.min_count,
     58                          workers=self.workers,
---> 59                          seed=self.seed)
     60 
     61         num_of_nodes = graph.number_of_nodes()

TypeError: __init__() got an unexpected keyword argument 'iter'

Did anyone have similar issues or know the solution?

Thanks!