2. t-NSE 可视化

1. t-NSE 可视化

t-SNE是t-Distributed Stochastic Neighbor Embedding简写,出自Visualizing Data using t-SNE论文。

t-SNE是一种非线性降维算法,通过原始空间和嵌入空间的联合概率的KL散度来评估降维到嵌入空间的效果,就是用KL散度的函数作为loss函数,然后通过梯度下降最小化loss函数,最终获得收敛结果。但是t-SNE计算复杂度高。

下面是t-SNE可视化手写数字的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
import seaborn as sns


df = pd.read_csv('mnist_train.csv')

# 看看数据样子
print(df.head(4))
# 获取标签列
labels = df['label']

# 获取训练的数字图片的pixel
data = df.drop("label", axis=1)

输出:

   label  1x1  1x2  1x3  1x4  1x5  ...  28x23  28x24  28x25  28x26  28x27  28x28
0      5    0    0    0    0    0  ...      0      0      0      0      0      0
1      0    0    0    0    0    0  ...      0      0      0      0      0      0
2      4    0    0    0    0    0  ...      0      0      0      0      0      0
3      1    0    0    0    0    0  ...      0      0      0      0      0      0

[4 rows x 785 columns]
2. 数据预处理
## 预处理数据 标准化
standardized_data = StandardScaler().fit_transform(data)
print(standardized_data.shape) #(60000, 784) 

#只取前5000样例
data_5000 = standardized_data[0:5000, :]
labels_5000 = labels[0:5000]

3. t-SNE降维及可视化
##建立TSNE实例
model = TSNE(n_components=2, random_state=0)
# n_components:降维后维度,一般设置2,
# 还有像perplexity困惑度,默认30
# learning rate学习率,默认200
# n_iter迭代次数,最大1000

#训练得到降维后数据
tsne_data = model.fit_transform(data_5000)

#将降维后数据和对应label纵向拼接后再转置为样本数5000x4列的矩阵
tsne_data = np.vstack((tsne_data.T, labels_5000)).T
tsne_df = pd.DataFrame(data=tsne_data,
                       columns=("dim_1", "dim_2", "label"))

# 可视化tSNE结果
plt.figure(dpi=500)
sns.FacetGrid(tsne_df, hue="label", height=10).map(
    plt.scatter, 'dim_1', 'dim_2').add_legend()

plt.savefig('tSNE.png')
plt.show()

结果如下:

t-SNE 结果

Inference

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值