Random State is required in Usage example,
Closed this issue · 4 comments
Hi,
when I try to run the transform, it seems that the random state is required.
I solved it changing the example embedding from:
embedding = pacmap.PaCMAP(n_dims=2, n_neighbors=None, MN_ratio=0.5, FP_ratio=2.0)
to:
embedding = pacmap.PaCMAP(n_dims=2, n_neighbors=None, MN_ratio=0.5, FP_ratio=2.0, random_state = 1)
Could you elaborate over the error you've encountered? I cannot reproduce this error locally. random_state
should be an optional parameter.
Sure,
In my case, random_state
seems to be mandatory. If I remove this parameter I get the following error:
TypeError Traceback (most recent call last)
<ipython-input-49-84db434672b2> in <module>
21
22 # fit the data (The index of transformed data corresponds to the index of the original data)
---> 23 X_transformed = embedding.fit_transform(X, init="pca")
24
25 # visualize the embedding
~/.local/lib/python3.8/site-packages/pacmap/pacmap.py in fit_transform(self, X, init, save_pairs)
573
574 def fit_transform(self, X, init=None, save_pairs=True):
--> 575 self.fit(X, init, save_pairs)
576 if self.intermediate:
577 return self.intermediate_states
~/.local/lib/python3.8/site-packages/pacmap/pacmap.py in fit(self, X, init, save_pairs)
532 )
533 if save_pairs:
--> 534 self.embedding_, self.intermediate_states, self.pair_neighbors, self.pair_MN, self.pair_FP = pacmap(
535 X,
536 self.n_dims,
~/.local/lib/python3.8/site-packages/pacmap/pacmap.py in pacmap(X, n_dims, n_neighbors, n_MN, n_FP, pair_neighbors, pair_MN, pair_FP, distance, lr, num_iters, Yinit, apply_pca, verbose, intermediate, seed)
357 if verbose:
358 print("X is normalized")
--> 359 pair_neighbors, pair_MN, pair_FP = generate_pair(
360 X, n_neighbors, n_MN, n_FP, distance, verbose
361 )
~/.local/lib/python3.8/site-packages/pacmap/pacmap.py in generate_pair(X, n_neighbors, n_MN, n_FP, distance, verbose)
262 n_neighbors_extra = min(n_neighbors + 50, n)
263 tree = AnnoyIndex(dim, metric=distance)
--> 264 tree.set_seed(_RANDOM_STATE)
265 for i in range(n):
266 tree.add_item(i, X[i, :])
TypeError: an integer is required (got type NoneType)
I installed PaCMAP (v 0.5.0 ) via PIP and the Python version I'm using is 3.8.10
I still cannot reproduce this error locally, but I proposed some changes towards the repo that could probably solve your problem. Could you download the newest version via PIP and see if that works? I'm so sorry since I'm unable to verify whether the problem could be solved locally.
Great, it works now as documented. I removed the older version and installed v0.5.2 and it works perfectly without random_state
parameter.
Thank you!!