Google Colab 上的 FIt-SNE

问题描述 投票:0回答:1

如何在我的 Colab 笔记本上实现基于 FFT 加速插值的 t-SNE (FIt-SNE)?

我试图在狗情绪的kaggle数据集上计算t-SNE, 我首先尝试获取第一个组件。

pc = 60
pca = decomposition.PCA(n_components=pc)
_ = pca.fit(images)
imgPCA = pca.transform(images)

tsne = TSNE(n_components=2)
Z = tsne.fit_transform(imgPCA)
plot_embedding(Z)

然后我尝试了多核t-SNE来提高迭代次数,但我仍然不喜欢它

!pip install git+https://github.com/DmitryUlyanov/Multicore-TSNE.git

from MulticoreTSNE import MulticoreTSNE

Z = MulticoreTSNE(n_jobs=4, n_iter=10000).fit_transform(imgPCA)
plot_embedding(Z, show_axis = True)

现在我想尝试使用FIt-SNE,但我不知道如何使用它,你能帮助我吗? 或者,如果您愿意,也许您可以帮助改进之前的代码片段。

有代码可以理解数据集的格式:

import pandas as pd
import cv2

img_size = (192,192,3)
num_px = img_size[0] * img_size[1] * img_size[2]

directory = '/content/drive/MyDrive/Colab Notebooks/ML/Dog_Emotion/' 
images = []
labels = []
labels_df = pd.read_csv(directory + "labels.csv")
n_images = 0

for image in tqdm(labels_df.iloc, desc = "loading images", unit = "images", total = 4000):
  images.append(np.asarray(cv2.resize(cv2.imread(directory + image[2] + '/' + image[1], cv2.IMREAD_COLOR), img_size[0:2])[:, :, ::-1]))
  labels.append(image[2])

images, labels = np.array(images).reshape(4000, num_px), np.array(labels)

print(f'labels shape: {labels.shape}')
print(f'images shape: {images.shape}')
print(f'images size: {img_size}')

def plot_embedding(Z, show_axis="False"):
  plt.figure(figsize=(10, 8))
  map = {label: i for i, label in enumerate(np.unique(labels))}
  color = np.array([map[l] for l in labels])
  plt.scatter(Z[:, 0], Z[:, 1], c = color, cmap = "jet")
  plt.colorbar()
  plt.title('2d t-SNE Visualization')
  if not show_axis:
    plt.axis("off")
  plt.axis("equal")
  plt.show()

标签形状:(4000,) 图像形状:(4000, 110592) 图片尺寸:(192, 192, 3)

machine-learning google-colaboratory dimensionality-reduction tsne
1个回答
0
投票

当数据标准化时,PCA 和 t-SNE 通常表现更好。在应用 PCA 之前,请确保像素值从 0 缩放到 1。这有助于将数据以零为中心并标准化比例。

为 PCA 选择 60 个分量可能是合适的,但您可以尝试不同的数字以查看它们如何影响 t-SNE 结果。根据捕获的方差量,组件越少可能越好。例如,您可以从 4 开始,逐渐增加到 8、16、24...,然后看看哪一个效果最好。

我还需要提到 t-SNE 有几个可以调整的参数: 困惑:影响 t-SNE 如何平衡数据的局部特征和全局特征之间的注意力。 (典型值范围在 5 到 50 之间。) Learning_rate:我认为默认是200,但你可能也需要调整它。 试试这些,我希望你会更喜欢这个结果。

© www.soinside.com 2019 - 2024. All rights reserved.