我正在使用来自水蟒的Jupyter笔记本和python 2.7。我有一个大约250,000维的数据集,我需要将其压缩为n个较低的维。我正在使用scikit TSNE。为n=5n=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)

07-27 22:48