t-SNE с использованием метрики расстояния от земляного движителя

Я пытаюсь использовать t-SNE с расстоянием Вассерштрейна вместо евклидова. Вот часть моего кода:

from sklearn.manifold import TSNE
from scipy.stats import wasserstein_distance

tsne = TSNE(n_components=2,perplexity=40, n_iter=1000, metric=wasserstein_distance)
img_embedded = tsne.fit_transform(images)

imagesсодержит 512 изображений размером 64x64x3. Кто-нибудь может сказать мне, действительно ли мой код делает то, что я хочу? Я не уверен, что этоmetric=wasserstein_distanceверно. Код работает отлично, но когда я смотрю в 2D-пространство, он выглядит ужасно. Если я использую евклидову метрику, 2D-изображение будет достаточно хорошим, поэтому я не уверен, что расстояние Вассерштрейна просто не подходит для моей проблемы, или я использую его неправильно. Спасибо!

Изменить: изображения представляют собой объект фиксированного размера, движущийся по фиксированному фону. В идеале, учитывая, что для каждого изображения все одинаково, за исключением положения объекта, я бы надеялся, что 2D-представление покажет траекторию объекта, то есть x и y объекта на каждом изображении (или, по крайней мере, обратимое преобразование их). Ниже я прикрепил изображение, полученное с использованием евклидова расстояния (первое) и расстояния Вассерштейна (второе). Как видите, в первом случае траектории довольно четкие (например, линии в основном пересекаются там, где они должны быть, поэтому топология в основном сохраняется). Во втором случае - полный бардак.

0 ответов

Другие вопросы по тегам