【机器学习】(十八)用t-SNE进行流行学习:手写数字分类

PCA是用于变换数据的首选方法,也可以进行可视化,但它的性质(先旋转然后减少方向)限制了有效性。
流行学习算法:是一类用于可视化的算法,它允许进行更复杂的映射,通常也可以给出更好的可视化。t-SNE算法是其中一种。
t-SNE算法:找到数据的一种二维表示,尽可能保持数据点之间的距离(相同的靠近,不同的远离,分堆)。这种方法不知道类别标签,是完全无监督的。但是它只能变换用于训练的数据,不支持新数据(没有transform方法),即不能用于测试集。具有调节参数(perplexity、early_exaggeration),通常默认参数的效果就很好。

# 导入一个手写数据集(比MNIST数据集小),每个数据点是0-9的一张8*8灰度图像
from sklearn.datasets import load_digits
digits = load_digits()

# 使用t-SNE降维(二维)
from sklearn.manifold import TSNE
tsne = TSNE(random_state=42)
digits_tsne = tsne.fit_transform(digits.data)

# 设置字体颜色
colors = ['#FFB7DD', '#FF3333', '#C63300', '#FFAA33', '#DDAA00', 
          '#FFFF00', '#66DD00', '#33FFFF', '#0066FF', '#B088FF']

# 数据可视化
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))
plt.xlim(digits_tsne[:,0].min(), digits_tsne[:,0].max()+1)
plt.ylim(digits_tsne[:,1].min(), digits_tsne[:,1].max()+1)
for i in range(len(digits.data)):
    # 绘制文本数据
    plt.text(digits_tsne[i,0], digits_tsne[i,1], str(digits.target[i]), color=colors[digits.target[i]], 
           fontdict={'weight':'bold', 'size':9})
    plt.xlabel('t-SNE feature 0')
    plt.ylabel('t-SNE feature 1')

plt.text函数:画图时给点加标签。fontdict参数覆盖文本属性的字典。

官方文档:Matplotlib.pyplot.text

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值