数据降维与可视化——t-SNE

t-SNE是一种强大的数据降维与可视化工具,尤其适合展现高维数据的局部结构。它通过将高维数据转换为低维空间的概率分布,能有效地保留数据的相似性关系。t-SNE的优化包括困惑度、前期放大系数等参数的调整,Barnes-Hut t-SNE提供了一种速度优化。虽然存在计算复杂度高、结果随机性等问题,但在合适的参数设置下,t-SNE能够清晰地展示数据的分类结构,如在MNIST数据集上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据降维与可视化——t-SNE

原文:https://blog.youkuaiyun.com/hustqb/article/details/78144384

声明:

  1. manifold:可以称之为流形数据。像绳结一样的数据,虽然在高维空间中可分,但是在人眼所看到的低维空间中,绳结中的绳子是互相重叠的不可分的。
  2. 参考sklearn官方文档
  3. 对数据降维比较熟悉的朋友可以看这篇博客 
    t-SNE实践——sklearn教程

数据降维与可视化——t-SNE

  t-SNE是目前来说效果最好的数据降维与可视化方法,但是它的缺点也很明显,比如:占内存大,运行时间长。但是,当我们想要对高维数据进行分类,又不清楚这个数据集有没有很好的可分性(即同类之间间隔小,异类之间间隔大),可以通过t-SNE投影到2维或者3维的空间中观察一下。如果在低维空间中具有可分性,则数据是可分的;如果在高维空间中不具有可分性,可能是数据不可分,也可能仅仅是因为不能投影到低维空间。 
  下面会简单介绍t-SNE的原理,参数

### MATLAB 实现数据分类、以及 t-SNE 可视化的示例 以下是基于提供的参考资料和专业知识构建的一个完整流程,展示如何在 MATLAB 中完成数据分类、以及通过 t-SNE 进行可视化的操作。 #### 数据准备阶段 首先加载或生成一组测试数据。这里假设我们有一个简单的多类别的二数据集作为输入: ```matlab % 创建一个随机的三数据样本 (100个点, 3类别) data = [randn(50,3)+ones(50,3); randn(50,3)-ones(50,3)]; labels = [ones(50,1); 2*ones(50,1)]; % 类别标签分别为1和2 ``` 上述代码创建了一个具有两个不同分布的数据集合 `data` 和对应的类别标签 `labels`[^1]。 #### 使用 t-SNE数据进行 调用内置函数或者自定义实现来执行 t-SNE 算法以度至两以便于绘图显示: ```matlab % 调整参数设置 options = statset('MaxIter',1000,'Display','iter'); % 执行t-SNE到2D平面 Y = tsne(data, 'Algorithm', 'barnes-hut', 'Options', options); ``` 此部分利用了MATLAB中的统计工具箱功能来进行实际运算过程,并指定采用Barnes-Hut近似加速计算效率较高的方式处理较大规模的数据集[^4]。 #### 结果可视化 最后一步就是绘制这些经过转换后的坐标位置图像出来查看效果如何: ```matlab figure; scatter(Y(:,1), Y(:,2), [], labels, 'filled'); title('t-SNE Visualization of Data Clusters'); xlabel('Dimension 1'); ylabel('Dimension 2'); colorbar; legend('Class 1', 'Class 2'); grid on; ``` 这段脚本会生成一张散点图表,在其中每个点代表原始资料里的单一记录;颜色则区分不同的群组归属情况[^3]。 以上即为整个工作流的具体实施步骤说明——从获取初始素材直至最终呈现图形界面给用户观察分析之全过程概述完毕!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值