我有一个约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)
答案 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()