from sklearn import manifold
# t-SNE 倾向于保存局部特征,训练较慢
for i in range(listLength):
my_value[i] = np.array(my_value[i]).reshape(-1, 64)
tsne = manifold.TSNE(n_components=2, init='pca', random_state=501)
X_tsne = tsne.fit_transform(my_value[i])
x_min, x_max = X_tsne.min(0), X_tsne.max(0)
X_norm = (X_tsne - x_min) / (x_max - x_min) # 归一化
data[i] = X_norm
t-SNE的参数:
n_components:int,可选(默认值:2)嵌入式空间的维度。
init:字符串,可选(默认值:“random”)嵌入的初始化。可能的选项是“随机”和“pca”。 PCA初始化不能用于预先计算的距离,并且通常比随机初始化更全局稳定。
random_state:int或RandomState实例或None(默认)
import umap
# umap 一致的流形逼近和投影以进行降维,类似但优于t-SNE,可用于可视化,但也可用于一般的非线性降维。
for i in range(listLength):
my_value[i] = np.array(my_value[i]).reshape(-1, 64)
reducer = umap.UMAP(random_state=42) # 使用umap降至二维
embedding = reducer.transform(my_value[i])
data[i] = embedding