1

私はscikit learnの 'Spectral clustering'関数を使用しています。私は8100×8100マトリックスのクラスタリングを実行できますが、このファンクションは10000×10000マトリックスの誤差をスローします。Scikitラーニングのスペクトルクラスタリングで処理できるマトリックスのサイズはどれくらいですか?

大きな行列には誰でもこの関数を使用しましたか?

編集:

Not enough memory to perform factorization. 
    Traceback (most recent call last): 
    File "combined_code_img.py", line 287, in <module> 
    labels=spectral.fit_predict(Affinity) 
    File "/root/anaconda/lib/python2.7/site-packages/sklearn/base.py",   
    line 410, in fit_predict 
    self.fit(X) 
    File "/root/anaconda/lib/python2.7/site-packages/sklearn/cluster/spectral.py", line 463, in fit 
    assign_labels=self.assign_labels) 
    File "/root/anaconda/lib/python2.7/site-packages/sklearn/cluster/spectral.py", line 258, in spectral_clustering 
    eigen_tol=eigen_tol, drop_first=False) 
    File "/root/anaconda/lib/python2.7/site-packages/sklearn/manifold/spectral_embedding_.py", line 265, in spectral_embedding 
tol=eigen_tol, v0=v0) 
    File "/root/anaconda/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1560, in eigsh 
symmetric=True, tol=tol) 
    File "/root/anaconda/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1046, in get_OPinv_matvec 
    return SpLuInv(A.tocsc()).matvec 
    File "/root/anaconda/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 907, in __init__ 
    self.M_lu = splu(M) 
    File "/root/anaconda/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 261, in splu 
ilu=False, options=_options) 
    MemoryError 

私のマシンは16ギガバイトのRAMを持っている:私は、次のエラーメッセージが表示されました。

+0

明らかにそれはあなたの記憶に依存します。 100x100は小さいので、サイズは問題ではありません。実際のエラーとは何ですか? –

+0

申し訳ありませんが、間違った寸法を提示しました。関数は90 * 90×90 * 90、つまり8100×8100で動作します。 – user3515225

+0

倍精度(8バイト)と行列の2つのコピーで、8100x8100行列のメモリ要件を計算してみてください。 –

答えて

0

スペクトルクラスタリングアルゴリズムは、〜0.8GBのデータセット(10000x10000アレイ、64ビット浮動小数点数)を処理するために16GB RAMのメモリが不足しているため、時間の複雑さがかなり悪く、空間の複雑さがかなり悪くなります。したがって、大きなデータセットには適していません。

代わりに、より良い縮尺のクラスタリングアルゴリズムを使用する必要があります。 HDBSCAN documentationclustering scaling

などのベンチマークを参照してください。たとえば、Scikit-LearnのHDScanやHDBSCANのDBBANはスケールが改善されます。

+0

これらのメソッドはアフィニティマトリックスを見つける必要がありますか?または、そのままデータを直接提供する必要がありますか? – user3515225

+0

生データを直接処理します。 – rth

関連する問題