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 объекта на каждом изображении (или, по крайней мере, обратимое преобразование их). Ниже я прикрепил изображение, полученное с использованием евклидова расстояния (первое) и расстояния Вассерштейна (второе). Как видите, в первом случае траектории довольно четкие (например, линии в основном пересекаются там, где они должны быть, поэтому топология в основном сохраняется). Во втором случае - полный бардак.