我正在使用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是全局熊猫数据框
我经历了这个这是但找不到解决方案
我已经找到了使用python-bhtsne
的解决方案,这也是 barnes-hut的T-Distribed随机邻居嵌入方法的实现。
它非常容易实现,甚至提供了一个选项,可以在tsne
的每次运行中都具有相同的参数,这是scikit
实现中不存在的。
这是Laurens van der Maaten的原始实施的Python包装。
因此,基本上您只需要执行以下操作,而不是scikit
的常规TSNE
:
from bhtsne import tsne
data_nd_tsne = tsne(diff_df)