机器学习系列15:通过t-SNE可视化高维数据

t-SNE 的全称是 t-distributed stochastic neighbor embedding(t-分布随机领域嵌入),这是一种非线性降维技术。而 PCA 和 LDA 是线性的降维技术。

t-SNE 通常用来在二维或者三维空间中可视化复杂数据集。

简单来说,t-SNE 试图发现数据集中的样本在原始高维空间中距离的概率分布,然后再去低维空间中重建这种概率分布。我们通过 t-SNE 将高维空间中的数据点嵌入到了低维空间,同时还保留了数据点在高维空间中的距离关系。

不过 t-SNE 只能用于数据可视化,我们没法用训练集的数据去拟合一个 t-SNE 模型,然后将模型用于测试集,我们只能用整个数据集(训练集和测试集)去拟合 t-SNE 模型,然后得到数据集的低维表示,并可视化。

我们现在就以著名的手写数字数据集为例,scikit-learn 自带了该数据集。

图片

这个数据集中包含了 1797 张手写的 0 到 9 的数字图片,每张图片都是一个 8 x 8 的灰度图,如上图所示。

我们可以将 8 x 8 的灰度图展平成长为 64 的表示样本特征的向量。

图片

现在我们将 64 维特征投影到了 2 维空间。

你可能注意到了我们使用了 PCA 初始化 t-SNE 嵌入。而且 t-SNE 还有很多额外的超参数,我们这里都使用了 scikit-learn 提供的默认值。

现在我们就在二维空间可视化这个手写数字数据集。y_digits 只被用来在可视化时标记不同的数据点族群,并没有参与到 t-SNE 的训练中。

图片

我们可以看到 t-SNE 降维后,还是能够将表示不同数字的样本区分开,但是这种区分不是很完美,部分是因为我们使用了默认的超参数,部分是因为数据集本身的问题,比如这里图像的分辨率很低,手写的 3 和手写的 8 可能很相似。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值