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だったのでこっちは試していない。念の為。