t-SNE可视化python实现

t-SNE常用于将数据降维后可视化,直观地看出数据的分布情况。关于t-SNE的详细介绍见t-SNE:最好的降维方法之一 - 知乎 (zhihu.com)

本文介绍t-SNE的python实现。

# 固定随机种子会用到的包
import random
import numpy as np
import torch

# 使用TSNE函数比调用的包
from sklearn.manifold import TSNE
import seaborn as sns

# -----------数据获取-----------------
# x是需要降维的数据,通常是神经网络的高层特征(全连接层的输出)
# x为二维,如x.size()=[400,769],表示400个样本,每个样本特征的维度是1×769
X = x.cpu().numpy()    # 将特征转换为numpy形式,因为高层特征通常为tensor

# 归一化
max_ = np.max(X)
min_ = np.min(X)
X = (X - min_)/(max_ - min_)

# y为样本标签,也是二维,标签可以是数字也可以是字符串
Y = np.array(y)  # Y.shape=(400,1)

# ------------t-SNE可视化-------------
RS = 20   # 初始阶段参数
# 根据标签设置标记形状,以手写体数字识别任务为例,标签有0-9共10类,则:
Mark = {0:"X",1:"o",2:"X",3:"o",4:"X",5:"o",6:"X",7:"o"}   # o和x分别为不同形状
# Mark = {'src1_pos':"X",'src1_neg':"o",'src2_pos':"X",'src2_neg':"o",'src3_pos':"X",'src3_neg':"o",'tgt_pos':"X",'tgt_neg':"o"}  # 举例,标签为字符串时
 
sns.set(rc={'figure.figsize':(8,6)})       # 设置图片尺寸
palette = sns.color_palette("bright", 8)
tsne = TSNE(n_components=2,random_state=RS,perplexity=perplexity,early_exaggeration=early_exaggeration,n_iter=n_iter)

X_embedded = tsne.fit_transform(X)         # X_embedded = (,2)
fig = sns.scatterplot(x=X_embedded[:,0], y=X_embedded[:,1], hue=Y,style=Y,legend='full', palette=palette, markers=Mark)
scatter_fig = fig.get_figure()             # 获取散点图
savepath = '/data1/code/xxx.png'
scatter_fig.savefig(savepath, dpi = 200)   # 每英寸点数(dots per inch)

t-SNE的参数详解见t-SNE高维数据可视化(python)_t-sne可视化python_haoji007的博客-CSDN博客

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
t-SNE是一种降维算法,用于将高维数据映射到二维或三维空间中,以便于可视化。在Python中,可以使用scikit-learn库中的t-SNE实现。引用\[1\]中提供了一个使用Python实现t-SNE的代码示例。该示例使用了scikit-learn库中的TSNE类,并通过fit_transform方法将高维数据映射到二维空间。在示例中,首先将数据转换为numpy数组,然后使用TSNE类进行降维,并使用plot_embedding函数进行可视化。最后,使用plt.show方法显示可视化结果。引用\[2\]和引用\[3\]也提供了类似的代码示例,只是在数据转换部分使用了不同的变量名。你可以根据自己的需求选择适合的代码示例来实现t-SNE算法。 #### 引用[.reference_title] - *1* [Python实现TSNE](https://blog.csdn.net/zhangweiguo_717/article/details/70998959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [tSNE-python代码实现及使用讲解](https://blog.csdn.net/m0_47410750/article/details/123119544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值