scikit-learn을 사용하여 많은 양의 LDA 모델에 적합합니다. 관련 코드 조각은 다음과 같습니다 : 나는 "어떤 공간을 받고하지있어 약간의 시간이 장치에서 떠난 후 Sklearn 모델에 맞는 동안 "장치에 남은 공간 없음"오류가 발생했습니다.
lda = LatentDirichletAllocation(n_topics = n_topics,
max_iter = iters,
learning_method = 'online',
learning_offset = offset,
random_state = 0,
evaluate_every = 5,
n_jobs = 3,
verbose = 0)
lda.fit(X)
(. 내가 여기있는 유일한 가능성 관련 세부 내가 여러 작업을 사용하고 있다는 추측)
"오류 디스크의 충분한 공간과 사용 가능한 메모리가 충분하더라도. 두 번 다른 컴퓨터에서 (로컬 컴퓨터와 원격 서버에서) 동일한 코드를 여러 번 시도했습니다. 먼저 python3을 사용하고 python2를 사용하고 같은 오류가 발생할 때마다 시도했습니다.데이터의 작은 샘플에서 동일한 코드를 실행하면 모든 것이 잘 동작합니다.
전체 스택 추적 :
Failed to save <type 'numpy.ndarray'> to .npy file:
Traceback (most recent call last):
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 271, in save
obj, filename = self._write_array(obj, filename)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/numpy_pickle.py", line 231, in _write_array
self.np.save(filename, array)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.py", line 491, in save
pickle_kwargs=pickle_kwargs)
File "/home/ubuntu/anaconda2/lib/python2.7/site-packages/numpy/lib/format.py", line 584, in write_array
array.tofile(fp)
IOError: 275500 requested and 210934 written
IOErrorTraceback (most recent call last)
<ipython-input-7-6af7e7c9845f> in <module>()
7 n_jobs = 3,
8 verbose = 0)
----> 9 lda.fit(X)
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in fit(self, X, y)
509 for idx_slice in gen_batches(n_samples, batch_size):
510 self._em_step(X[idx_slice, :], total_samples=n_samples,
--> 511 batch_update=False, parallel=parallel)
512 else:
513 # batch update
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in _em_step(self, X, total_samples, batch_update, parallel)
403 # E-step
404 _, suff_stats = self._e_step(X, cal_sstats=True, random_init=True,
--> 405 parallel=parallel)
406
407 # M-step
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/online_lda.pyc in _e_step(self, X, cal_sstats, random_init, parallel)
356 self.mean_change_tol, cal_sstats,
357 random_state)
--> 358 for idx_slice in gen_even_slices(X.shape[0], n_jobs))
359
360 # merge result
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in __call__(self, iterable)
808 # consumption.
809 self._iterating = False
--> 810 self.retrieve()
811 # Make sure that we get a last message telling us we are done
812 elapsed_time = time.time() - self._start_time
/home/ubuntu/anaconda2/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in retrieve(self)
725 job = self._jobs.pop(0)
726 try:
--> 727 self._output.extend(job.get())
728 except tuple(self.exceptions) as exception:
729 # Stop dispatching any new job in the async callback thread
/home/ubuntu/anaconda2/lib/python2.7/multiprocessing/pool.pyc in get(self, timeout)
565 return self._value
566 else:
--> 567 raise self._value
568
569 def _set(self, i, obj):
IOError: [Errno 28] No space left on device
아마도 멀티 프로세싱 ('''n_jobs = 1''')없이 작동 할 것입니다. scikit-learn 경로가 일부 임시 데이터를 사용하고 있는지 확실하지 않습니다. tmp 파티션의 크기는 어느 정도입니까? – sascha
감사합니다. @ 사샤, 한 번만 시도해 보겠습니다. 'tmpfs'가 tmp 파티션 (나는 그것이라고 생각 하는가?)이라면 1.6GB이다. 이것이 문제가 될 수 있습니까? 그렇다면이 문제를 해결할 수있는 방법이 있습니까? – machaerus