t-SNE实践——sklearn教程
from gensim.models import Word2Vec
from random import sample
from sklearn.manifold import TSNE
from pylab import mpl
wd2=gensim.models.Word2Vec.load("random_walkstxt.bin")
#载入模型,这个模型中的词向量是100维的,模型文件放在当前目录
words = list(wd2.wv.vocab)
#把所有词向量的词语装到列表中
labels = sample(words, 15) #随机取出1000个词语用来画图
tokens = model[labels] #得到1000个词语的词向量
tsne_model = TSNE(perplexity=40, n_components=2, init='pca', n_iter=2500, random_state=23)
# perplexity: 默认为30,数据集越大,需要参数值越大,建议值位5-50 , n_components=2 默认为2,嵌入空间的维度(嵌入空间的意思就是结果空间),别的参数估计不重要
# print(tokens)
new_values = tsne_model.fit_transform(tokens)
# 将X投影到一个嵌入空间并返回转换结果
print(new_values)
#降维处理
mpl.rcParams['font.sans-serif'] = ['SimHei'] #中文字体
mpl.rcParams['axes.unicode_minus'] = False #防止负号出现异常显示
x = []
y = []
for value in new_values:
x.append(value[0])
y.append(value[1])
print(x)
print(y)
plt.figure(figsize=(10,10)) #定义画布大小
for i in range(len(x)):
plt.scatter(x[i],y[i])
plt.annotate(labels[i],
xy=(x[i], y[i]),
xytext=(5, 2),
textcoords='offset points',
ha='right',
va='bottom')
plt.show()