2017-08-10 4 views
0

凝集型クラスタリングとdoc2vecの新機能です。次の問題で誰かが私を助けてくれることを願っています。凝集型クラスタリングto doc2vec

これは私のコードです:私が欲しいもの

model = AgglomerativeClustering(linkage='average', 
     connectivity=None, n_clusters=2) 
X = model_dm.docvecs.doctag_syn0 
model.fit(X, y=None) 
model.fit_predict(X, y=None) 

は、各観測の距離の平均を予測することです。

MemoryErrorTraceback (most recent call last) 
<ipython-input-22-d8b93bc6abe1> in <module>() 
     2 model = AgglomerativeClustering(linkage='average',connectivity=None,n_clusters=2) 
     3 X = model_dm.docvecs.doctag_syn0 
----> 4 model.fit(X, y=None) 
     5 

/usr/local/lib64/python2.7/site-packages/sklearn/cluster/hierarchical.pyc in fit(self, X, y) 
    763 n_components=self.n_components, 
    764          n_clusters=n_clusters, 
--> 765          **kwargs) 
    766   # Cut the tree 
    767   if compute_full_tree: 

/usr/local/lib64/python2.7/site-packages/sklearn/externals/joblib/memory.pyc in __call__(self, *args, **kwargs) 
    281 
    282  def __call__(self, *args, **kwargs): 
--> 283   return self.func(*args, **kwargs) 
    284 
    285  def call_and_shelve(self, *args, **kwargs): 

/usr/local/lib64/python2.7/site-packages/sklearn/cluster/hierarchical.pyc in _average_linkage(*args, **kwargs) 
    547 def _average_linkage(*args, **kwargs): 
    548  kwargs['linkage'] = 'average' 
--> 549  return linkage_tree(*args, **kwargs) 
    550 
    551 

/usr/local/lib64/python2.7/site-packages/sklearn/cluster/hierarchical.pyc in linkage_tree(X, connectivity, n_components, n_clusters, linkage, affinity, return_distance) 
    428    i, j = np.triu_indices(X.shape[0], k=1) 
    429    X = X[i, j] 
--> 430   out = hierarchy.linkage(X, method=linkage, metric=affinity) 
    431   children_ = out[:, :2].astype(np.int) 
    432 

/usr/local/lib64/python2.7/site-packages/scipy/cluster/hierarchy.pyc in linkage(y, method, metric) 
    669       'matrix looks suspiciously like an uncondensed ' 
    670       'distance matrix') 
--> 671   y = distance.pdist(y, metric) 
    672  else: 
    673   raise ValueError("`y` must be 1 or 2 dimensional.") 

/usr/local/lib64/python2.7/site-packages/scipy/spatial/distance.pyc in pdist(X, metric, p, w, V, VI) 
    1375 
    1376  m, n = s 
-> 1377  dm = np.zeros((m * (m - 1)) // 2, dtype=np.double) 
    1378 
    1379  # validate input for multi-args metrics 

MemoryError: 

答えて

1

あなたはMemoryErrorを得ている:私は、次のエラーを得ました。これは、あなたがメモリ不足であることを示す信頼できる指標です。

double(8バイト)の値(m * (m - 1)) // 2の値をnp.zeros()アレイに割り当てる試みが示されています。 scipyソースを見ると、mは、X、別名model_dm.docvecs.doctag_syn0.shape[0]のベクトル数です。

どのくらいのdocvecsを使用していますか?それは200,000だ場合、あなたは...

((200000 * 199999) // 2) * 8 bytes 

が必要になります...またはRAMの320ギガバイトについてそのnp.zeros()割り当てが成功するために。 (あなたがよりdocvecs、さらに多くのRAMを持っている場合。)

(凝集型クラスタリングは、scipyのダウンロード実装は非常にスペースがかかり始め、で計算し、格納しようと、すべてのペアごとの距離を、知っている必要があります。)

RAMを増やすか、docvecsを減らすか、別のクラスタリングアルゴリズムを使用するか、距離を計算するのが面倒な実装を使用する必要があります(ただし、再利用するのではなく、繰り返し必要な距離

関連する問題