gpt4 book ai didi

python - tfidf 上的 scikit-learn NearestNeighbors .kneighbors() 给出 ValueError : UPDATEIFCOPY base is read-only

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:23 24 4
gpt4 key购买 nike

我正在使用 scikit-learn NearestNeighbors 寻找最近的邻居,在 people wiki 数据上使用 tfidf。

在我的 .kneighbors() 方法调用中

res = neigh.kneighbors(obama_tfidf, return_distance=False)

Multiprocessing 模块抛出异常:

ValueError: UPDATEIFCOPY base is read-only

我已经在我的 github location here 上传了我的完整代码和示例数据(大小为 80 MB)供引用。

这是错误列表的一部分:

---------------------------------------------------------------------------
JoblibValueError Traceback (most recent call last)
<ipython-input-12-dbcbed49b042> in <module>()
1 obama_word_counts = count_vectorizer.transform(['obama'])
2 obama_tfidf = tfidf_transformer.transform(obama_word_counts)
----> 3 res = neigh.kneighbors(obama_tfidf, return_distance=False)
4 print res

/usr/local/lib/python2.7/dist-packages/sklearn/neighbors/base.pyc in kneighbors(self, X, n_neighbors, return_distance)
355 if self.effective_metric_ == 'euclidean':
356 dist = pairwise_distances(X, self._fit_X, 'euclidean',
--> 357 n_jobs=n_jobs, squared=True)
358 else:
359 dist = pairwise_distances(

/usr/local/lib/python2.7/dist-packages/sklearn/metrics/pairwise.pyc in pairwise_distances(X, Y, metric, n_jobs, **kwds)
1245 func = partial(distance.cdist, metric=metric, **kwds)
1246
-> 1247 return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
1248
1249

/usr/local/lib/python2.7/dist-packages/sklearn/metrics/pairwise.pyc in _parallel_pairwise(X, Y, func, n_jobs, **kwds)
1094 ret = Parallel(n_jobs=n_jobs, verbose=0)(
1095 fd(X, Y[s], **kwds)
-> 1096 for s in gen_even_slices(Y.shape[0], n_jobs))
1097
1098 return np.hstack(ret)

/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.pyc in __call__(self, iterable)
787 # consumption.
788 self._iterating = False
--> 789 self.retrieve()
790 # Make sure that we get a last message telling us we are done
791 elapsed_time = time.time() - self._start_time

/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/parallel.pyc in retrieve(self)
738 exception = exception_type(report)
739
--> 740 raise exception
741
742 def __call__(self, iterable):

JoblibValueError: JoblibValueError

我无法粘贴整个多处理异常,因为它超出了 S/O 发布限制。

我在这里错过了什么?

最佳答案

n_jobs 等于-1 时,作业数设置为CPU 核心数,如ref 中所述.

错误发生在 sklearn NN 函数调用 _parallel_pairwise() 时,它随后尝试获取偶数 个切片。

尝试将 n_jobs 设置为偶数,这当然小于 CPU 核心数。


正如您已经提到的,您可以在 n_jobs 等于 1 的情况下运行它,这不会并行化代码,因此不会暴露错误。

关于python - tfidf 上的 scikit-learn NearestNeighbors .kneighbors() 给出 ValueError : UPDATEIFCOPY base is read-only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com