我正在使用来自水蟒的Jupyter笔记本和python 2.7。我有一个大约250,000维的数据集,我需要将其压缩为n个较低的维。我正在使用scikit TSNE。为n=5
或n=10
运行TSNE时,它可以正常工作。但是当我转到n=50
或更多时,将显示以下消息:"The kernel appears to have died."
没有显示错误消息。问题是什么?是由于内存过载吗?我应该在终端中将代码作为脚本而不是在Jupyter中运行吗?
我的TSNE功能:
def tsne_to_n_dimensions(n):
start=timer()
#tsne
print diff_df.shape
tsne = sklearn.manifold.TSNE(n_components=n,verbose=2)
data_nd_tsne =tsne.fit_transform(diff_df)
calculate stuff from data_nd_tsne
return stuff
diff_df是一个全局熊猫数据帧
我已经经历过this
和this但找不到解决方案
最佳答案
我发现了使用python-bhtsne
的解决方案,它也是Barnes-Hut的t分布随机邻居嵌入方法的实现。
它非常容易实现,甚至提供了一个选项,使每次运行tsne
时都具有相同的参数具有相同的输出-在scikit
实现中是不存在的。
它是Laurens van der Maaten最初实现的python包装器。
因此,基本上,您只需要执行以下操作即可代替TSNE
中的常规scikit
:
from bhtsne import tsne
data_nd_tsne = tsne(diff_df)