python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python tsne算法降维结果不一致

python sklearn中tsne算法降维结果不一致问题的解决方法

作者:菠萝哥~

最近在做一个文本聚类的分析,在对文本数据embedding后,想着看下数据的分布,于是用sklearn的TSNE算法来降维embedding后的数据结果,当在多次执行后,竟发现TSNE的结果竟然变了,而且每次都不一样,所以本文就给大家讲讲如何解决sklearn中tsne算法降维结果不一致的问题

背景

最近在做一个文本聚类的分析,在对文本数据embedding后,想着看下数据的分布,于是用sklearn的TSNE算法来降维embedding后的数据结果。当在多次执行后,竟发现TSNE的结果竟然变了,而且每次都不一样。

主要的逻辑就是用的下面两行函数:

tsne = TSNE(n_components=2)
decomposition_data = tsne.fit_transform(embeddings)

解决流程

之前只是在网上随便找了个做TSNE的博客,粘了这两行代码就跑结果了,出现了这个问题后,决定还是得好好看看sklearn中的官方文档。官网链接:https://scikit-learn.org/0.16/modules/generated/sklearn.manifold.TSNE.html

sklearn的相关参数说明如下图所示:

有一个参数,"random_state", 我用红框标出了。TSNE在运算的时候,会初始化一个随机的种子点,如果没有指定该参数的话,默认该参数为None,同时会使用mumpy.random随机生成一个数作为种子点。这也是导致每次生成的TSE降维结果都是不一致的原因。

所以后面的解决方案就很简单了。将random_states随便赋予一个固定值就好了。我这次就把random_state设置成了0了,将上述代码改为:

tsne = TSNE(n_components=2, random_state=0)
decomposition_data = tsne.fit_transform(embeddings)

问题解决。

以上就是python sklearn中tsne算法降维结果不一致问题的解决方法的详细内容,更多关于python tsne算法降维结果不一致的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文