fit_transform tries to query non-existent node "0"
See original GitHub issuefrom nodevectors import Node2Vec
import networkx as nx
G = nx.Graph()
G.add_edge("1", "2")
n2v = Node2Vec(n_components=128)
n2v.fit_transform(G)
Output:
Making walks... Done, T=3.98
Mapping Walk Names... Done, T=0.07
Training W2V... WARNING: gensim word2vec version is unoptimizedTry version 3.6 if on windows, versions 3.7 and 3.8 have had issues
Done, T=0.39
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-6-43e45de9791e> in <module>
2 G.add_edge("1", "2")
3 n2v = Node2Vec(n_components=128)
----> 4 n2v.fit_transform(G)
~/miniconda3/envs/graphs/lib/python3.7/site-packages/nodevectors/node2vec.py in fit_transform(self, G)
151 pd.DataFrame.from_records(
152 pd.Series(np.arange(len(G.nodes)))
--> 153 .apply(self.predict)
154 .values)
155 )
~/miniconda3/envs/graphs/lib/python3.7/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
4106 else:
4107 values = self.astype(object)._values
-> 4108 mapped = lib.map_infer(values, f, convert=convert_dtype)
4109
4110 if len(mapped) and isinstance(mapped[0], Series):
pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()
~/miniconda3/envs/graphs/lib/python3.7/site-packages/nodevectors/node2vec.py in predict(self, node_name)
166 if type(node_name) is not str:
167 node_name = str(node_name)
--> 168 return self.model.wv.__getitem__(node_name)
169
170 def save_vectors(self, out_file):
~/miniconda3/envs/graphs/lib/python3.7/site-packages/gensim/models/keyedvectors.py in __getitem__(self, entities)
351 if isinstance(entities, string_types):
352 # allow calls like trained_model['office'], as a shorthand for trained_model[['office']]
--> 353 return self.get_vector(entities)
354
355 return vstack([self.get_vector(entity) for entity in entities])
~/miniconda3/envs/graphs/lib/python3.7/site-packages/gensim/models/keyedvectors.py in get_vector(self, word)
469
470 def get_vector(self, word):
--> 471 return self.word_vec(word)
472
473 def words_closer_than(self, w1, w2):
~/miniconda3/envs/graphs/lib/python3.7/site-packages/gensim/models/keyedvectors.py in word_vec(self, word, use_norm)
466 return result
467 else:
--> 468 raise KeyError("word '%s' not in vocabulary" % word)
469
470 def get_vector(self, word):
KeyError: "word '0' not in vocabulary"
Fitting and then predicting works fine:
n2v.fit(G)
for node in G:
print(n2v.predict(node))
Output:
Making walks... Done, T=0.00
Mapping Walk Names... Done, T=0.06
Training W2V... WARNING: gensim word2vec version is unoptimizedTry version 3.6 if on windows, versions 3.7 and 3.8 have had issues
Done, T=0.38
[ 0.01669522 0.01119813 -0.00566072 -0.0134473 0.01121703 0.00379648
0.01170088 -0.0121789 -0.01429367 -0.00849178 0.00943886 -0.00981773
0.00337284 -0.0013884 -0.01287963 -0.00460479 -0.00217993 -0.01019352
0.00615602 -0.00658679 0.01679845 -0.00747446 0.0019177 -0.00912566
-0.01688758 0.00983168 0.00286994 0.00739604 0.01249113 0.00116864
0.00235101 -0.01515406 -0.00786685 -0.01675885 -0.01421799 -0.00829282
-0.00385966 -0.00779916 -0.00067812 0.01312324 0.0154448 -0.0107193
-0.00059914 -0.00439935 -0.01970238 -0.00585162 -0.01741348 -0.00118494
-0.01365886 -0.007099 0.00806013 -0.00448715 -0.00633816 -0.009869
0.01835089 0.01462685 0.00408294 0.01042183 0.00773886 0.00500051
0.00697436 -0.00052141 -0.00307364 0.00916708 -0.0059573 -0.00794462
0.00316458 -0.01120937 0.00820292 -0.00175512 -0.00426679 0.00403081
0.0036373 -0.00538955 0.00169757 -0.00476247 0.00011785 -0.00015604
-0.02005355 0.00293106 -0.00457922 0.01199162 -0.01039407 -0.00975906
-0.00386479 0.00380202 0.0150509 0.00117078 0.01009431 -0.01518334
-0.01550014 -0.00316153 -0.01638743 0.00911983 -0.00656796 -0.01130522
0.00696332 0.00222521 -0.01348531 0.01745371 -0.01043333 0.00377076
0.00168364 -0.01029514 -0.01187336 -0.00047892 0.01747731 0.01539742
-0.00317966 0.01036133 0.00348293 0.00357884 0.01691393 -0.01314759
-0.00387712 0.01349622 0.00886216 0.01269572 -0.014981 0.01047694
-0.01591979 0.00815849 0.0053769 -0.01705019 0.00478466 -0.00967307
0.00100743 -0.00627678]
[ 1.74459908e-02 9.29250382e-03 -5.62654436e-03 -1.58256646e-02
6.62352284e-03 -1.04596815e-03 7.46087125e-03 -1.52283600e-02
-1.47760203e-02 -4.99586575e-03 8.37715156e-03 -1.14215305e-02
8.03218782e-03 -4.57122130e-03 -1.37374401e-02 -6.70122309e-03
5.60258329e-03 -1.36625227e-02 2.69854977e-03 -2.01221928e-03
1.41100660e-02 -1.21530667e-02 7.38256099e-03 -7.29203923e-03
-1.45003749e-02 8.89602769e-03 -1.07536477e-03 1.66074419e-03
7.48369843e-03 8.18155764e-04 3.80413979e-03 -1.41491415e-02
-1.12004904e-03 -1.57257933e-02 -1.23076690e-02 -9.28518735e-03
-5.15399221e-03 -5.42826438e-03 9.19695070e-04 9.03129764e-03
1.57911442e-02 -5.36569115e-03 -1.36574614e-03 -2.82609137e-03
-1.89300030e-02 -5.67972986e-03 -1.65421404e-02 -3.22455773e-04
-1.18535999e-02 -7.90045224e-03 9.72144585e-03 -7.91174080e-03
-4.45207767e-03 -1.19799254e-02 1.93504207e-02 1.06750363e-02
4.26934101e-03 1.17199738e-02 6.25003641e-03 1.98470801e-03
4.88949660e-03 7.53012951e-04 -8.29974841e-03 6.85363356e-03
-2.72968784e-03 -5.58869634e-03 1.48452440e-04 -8.40961654e-03
3.35645187e-03 -3.52724968e-03 3.98239447e-03 -2.40911031e-03
4.06429684e-03 -3.92150227e-03 6.94983220e-03 -8.35845713e-03
9.88924527e-04 -1.79716619e-03 -1.90840866e-02 2.46768352e-03
-4.37452644e-03 1.30511560e-02 -6.40019309e-03 -1.33609995e-02
3.72520881e-04 5.42262476e-03 1.41993044e-02 7.35963322e-03
1.08134123e-02 -1.49347940e-02 -1.22990599e-02 -9.69778374e-03
-1.74602009e-02 8.74316972e-03 -5.31877764e-03 -7.91502465e-03
3.98375420e-03 4.59250668e-03 -1.26426788e-02 1.60577614e-02
-1.03733260e-02 4.70442930e-03 6.72380021e-03 -1.34339379e-02
-1.50517235e-02 3.45687894e-03 1.50700649e-02 1.58219878e-02
4.28991532e-03 9.33015719e-03 7.03065936e-03 3.41207208e-03
1.49237625e-02 -1.07398266e-02 -1.00340396e-02 9.12039913e-03
1.27081424e-02 1.08739929e-02 -1.16528282e-02 4.42440435e-03
-1.53663196e-02 3.64650693e-03 5.37529076e-03 -1.76296048e-02
3.67483153e-05 -7.88922701e-03 -5.40610822e-03 -1.80462585e-03]
Issue Analytics
- State:
- Created 3 years ago
- Comments:7 (2 by maintainers)
Top Results From Across the Web
How to Use the ColumnTransformer for Data Preparation
Data transforms can be performed using the scikit-learn library; for example, the SimpleImputer class can be used to replace missing values, the ...
Read more >Python API Reference — xgboost 1.7.2 documentation
qid (array_like) – Query ID for data samples, used for ranking. ... 0: favor splitting at nodes closest to the node, i.e. grow...
Read more >Missing Data Imputation Using sklearn | Minkyung's blog
Missing data imputation using scikit-learn (0) Prepare data (1) ... Now let's check which columns have missing data, NaN . .isna() will give ......
Read more >Switch-If geometry node - SideFX
If the expression returns a value (rounded to the nearest integer) other than 0 , it is considered True. Attribute Presence. Tests whether...
Read more >What's new — Sympathy for Data 3.1.0 documentation
Migrations implementation is more robust in case of missing nodes or corrupt parameters. ... Restored ability to select operator in Filter rows in...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
The workaround is to fit and predict separately.
or one might know a way around it?