本文主要是介绍用t-SNE可视化特征,查看特征的可分性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用t-SNE可视化特征,查看特征的可分性
t-SNE是一个很好的可视化工具,这里备份一个用t-SNE可视化特征的例子,以便今后有需要查询使用
import numpy as np
import matplotlib.pyplot as plt
import json
from sklearn import manifold
%matplotlib inline
def draw_tsne(emb_filename):model = json.load(open(emb_filename,'r')) X = np.array(model['features'])y = np.array(model['label'])'''t-SNE'''tsne = manifold.TSNE(n_components=2, init='pca', random_state=501)X_tsne = tsne.fit_transform(X)print(X.shape)print(X_tsne.shape)print(y.shape)print("Org data dimension is {}.Embedded data dimension is {}".format(X.shape[-1], X_tsne.shape[-1]))'''嵌入空间可视化'''x_min, x_max = X_tsne.min(0), X_tsne.max(0)X_norm = (X_tsne - x_min) / (x_max - x_min) # 归一化plt.figure(figsize=(8, 8))for i in range(X_norm.shape[0]):plt.text(X_norm[i, 0], X_norm[i, 1], '*', color=plt.cm.Set1(y[i]), fontdict={'weight': 'bold', 'size': 18})plt.xticks([])plt.yticks([])plt.show()emb_filename = ("Algorithms-Test/show/show_DRML_AU12.json")
draw_tsne(emb_filename)
输出结果如下所示:
说明:
我的show_DRML_AU12.json中features存储fc输出的特征,label为0或者1代表是否出现AU12
可以看到:
print(X.shape)
print(X_tsne.shape)
print(y.shape)
的结果分别是:
(200, 192)
(200, 2)
(200,)
所以我是200张图片,特征提取维度是192,降维后变成2维。
参考文献 :
【1】https://scikit-learn.org/stable/modules/manifold.html#t-distributed-stochastic-neighbor-embedding-t-sne
【2】https://blog.csdn.net/hustqb/article/details/80628721
这篇关于用t-SNE可视化特征,查看特征的可分性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!