当前位置: 代码迷 >> python >> scikit learn TSNE变换在应用于单词向量时返回奇怪的结果
  详细解决方案

scikit learn TSNE变换在应用于单词向量时返回奇怪的结果

热度:66   发布时间:2023-06-14 08:43:46.0

当对word2vec生成的单词嵌入应用scikit learn's多种t-sne实现时,我得到了奇怪的结果。 通常情况下,(国王后)的距离和方向应与(男女)相同,如互联网上的大量例子所述。

我确信我的word2vec模型已正确训练,因为我正在使用Google新闻数据集,而且most_similar(king-man + woman)的查询也会按照预期返回女王。

转换的2d矢量的绘图也正确完成。 因此,它必须与scikit学习的t-sne转换有关。

我正在使用以下python代码进行转换:

vecs = np.concatenate(vecs)
np_vecs = np.array(vecs, dtype='float')
ts = TSNE(2)
reduced_vecs = ts.fit_transform(np_vecs)

我做错了什么或库配置错了?

我有同样的问题。 正如用户1814735所述,您不能仅仅提供几点并期望获得良好的结果。 用更多的单词喂养有很大帮助。

我想补充一下iceui2的答案。 原始是一种非线性维技术,它试图确保邻居之间的距离分布保持在较低和较高维度(高维的邻居将是较低维度的邻居)。

但是,你的方向很可能会被扭曲,因为过去常见的点的歧管已经发生了巨大的变化。

为了保留方向,我建议使用PCA进行降维,然后绘图。

  相关解决方案