可视化词向量-TSNE

可视化词向量的好处是可以验证训练的词向量的效果,常采用TSNE方法可视化。

t-分布领域嵌入算法,它只用于已标注数据时才真正有意义,可以明确显示出输入的聚类状况。

主要想法是将高维分布点的距离用条件概率来表示相似性,同时低维分布的点也是这样表示。只要二者的条件概率非常接近(用相对熵来训练,所以需要label),那就说明高维分布的点已经映射到低维分布上了。

 

难点:

1.高维距离较近的点,比较方便聚在一起,但是高维距离较远的点,却比较难在低维拉开距离。

2.训练时间较长,占用内存大。

from sklearn.manifold import TSNE
import numpy as np
import matplotlib.pyplot as plt
import random

#因为词向量文件比较大,全部可视化就什么都看不见了,所以随机抽取一些词可视化
words = list(model.wv.vocab)
random.shuffle(words)

vector = model[words]
tsne = TSNE(n_components=2,init='pca',verbose=1)
embedd = tsne.fit_transform(vector)

#可视化
plt.figure(figsize=(14,10))
plt.scatter(embedd[:300,0], embedd[:300,1])

for i in range(300):
    x = embedd[i][0]
    y = embedd[i][1]
    plt.text(x, y, words[i])
plt.show()

### t-SNE降维及可视化 为了使用Python实现t-SNE降维及其可视化,可以采用`sklearn.manifold.TSNE`模块来执行降维操,并利用Matplotlib或Seaborn库来进行图形化展示。下面是一个具体的例子说明如何完成这一过程[^1]。 #### 导入库文件 首先需要导入必要的库: ```python import numpy as np from sklearn.manifold import TSNE import matplotlib.pyplot as plt import seaborn as sns sns.set(rc={'figure.figsize':(11.7,8.27)}) palette = sns.color_palette("bright", 10) ``` #### 准备数据集 接着准备要分析的数据集。这里假设已经有了一个名为X的numpy数组形式的数据集以及对应的标签Y。 ```python # X is a matrix of shape (n_samples, n_features), Y contains labels. # For demonstration purposes we will create random data here but you should replace this with your actual dataset. np.random.seed(42) # Ensure reproducibility num_classes = 10 data_size = 5000 feature_dim = 30 X = np.random.rand(data_size, feature_dim).astype('float32') Y = np.random.randint(num_classes, size=data_size) ``` #### 执行t-SNE降维 然后创建TSNE对象并调用fit_transform函数对输入矩阵进行转换。可以选择不同的参数配置以适应不同类型的数据集大小和需求[^2]。 ```python tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300, method='barnes_hut', angle=0.5) results = tsne.fit_transform(X) ``` #### 可视化结果 最后一步就是绘制散点图来表示经过t-SNE处理后的低维度特征向量分布情况。颜色编码可以根据类别信息区分不同群组间的差异性[^3]。 ```python df = pd.DataFrame() df["y"] = Y df["comp-1"] = results[:,0] df["comp-2"] = results[:,1] plt.figure(figsize=(16,10)) sns.scatterplot(x="comp-1", y="comp-2", hue=df.y.tolist(), palette=palette, data=df) plt.show() ``` 通过以上步骤即可成功地运用Python实现了基于t-SNE算法的数据降维与可视化流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值