单词向量列表上的T-SNE可视化

时间:2019-01-17 15:08:18

标签: python scikit-learn nlp data-visualization word-embedding

我有一个约2万个单词向量('tuple_vectors')的列表,没有标签,每个标签如下所示

[-2.84658718e+00 -7.74899840e-01 -2.24296474e+00 -8.69364500e-01
  3.90927410e+00 -2.65316987e+00 -9.71897244e-01 -2.40408254e+00
  1.16272974e+00 -2.61649752e+00 -2.87350488e+00 -1.06603658e+00
  2.93374014e+00  1.07194626e+00 -1.86619771e+00  1.88549474e-01
 -1.31901133e+00  3.83382154e+00 -3.46174908e+00 ...

有没有一种快速,简洁的方法可以使用t-sne进行可视化?

我尝试了以下方法

from sklearn.manifold import TSNE

n_sne = 21060


tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300)
tsne_results = tsne.fit_transform(tuple_vectors)
plt(tsne_results)

1 个答案:

答案 0 :(得分:4)

如果您首先对文本进行矢量化处理,建议您使用yellowbrick库。由于TSNE非常昂贵,因此TSNEVisualizer中的yellowbrick会提前进行更简单的分解(默认情况下,SVD具有50个分量),然后执行t-SNE嵌入。然后,可视化工具绘制散点图,该散点图可以按聚类或按类别着色。这是使用tf-idfvectorizer的简单示例:

from yellowbrick.text import TSNEVisualizer
from sklearn.feature_extraction.text import TfidfVectorizer

# vectorize the text
tfidf  = TfidfVectorizer()
tuple_vectors = tfidf.fit_transform(sample_text)

# Create the visualizer and draw the vectors
tsne = TSNEVisualizer()
tsne.fit(tuple_vectors)
tsne.poof()