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算法降维结果不一致的资料请关注脚本之家其它相关文章!