アクサンの場合

Python3初心者が段々上達するログ

sklearn.manifold.tsneのメモリリークを回避するために(Anacondaのみ)

現象

大規模データでscikit-learnのmanifold.tsneを使うとメモリエラーを起こします。Pythonでメモリエラーか。

原因

mklのバグ、、、らしい。以前にscikit-learnにイシューが立っていたようだ。バージョンが上がった現在でも改善はされていない。このイシューはPython2系時点だった。今回はPython3系なのでやはりバージョンも関係ない。

Python crashes when calculating large t-SNE · Issue #4619 · scikit-learn/scikit-learn · GitHub

対策(翻訳)

Anacondaのみだが conda install nomkl これで解決できる。これでintel-mkl ライブラリを使わないためメモリリークを起こさないようだ。

非Anacondaの場合はラッパーを利用することになる。

GitHub - danielfrg/tsne: A python wrapper for Barnes-Hut tsne

自分はAnacondaだったのでこっちは試していない。念の為。