Scikit learn t-SNE使用土方机距离度量

Scikit learn t-SNE使用土方机距离度量,scikit-learn,dimensionality-reduction,earth-movers-distance,Scikit Learn,Dimensionality Reduction,Earth Movers Distance,我试图用t-SNE和wasserrain距离来代替欧几里得距离。以下是我的部分代码: 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)

我试图用t-SNE和wasserrain距离来代替欧几里得距离。以下是我的部分代码:

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)
图像
包含512个64x64x3的图像。有人能告诉我我的代码是否真的符合我的要求吗?我不确定该距离是否正确。代码运行得很好,但是当我查看2D空间时,它看起来很糟糕。如果我使用欧几里德度量,2D图像相当好,因此我不确定Wasserstrain距离是否根本不适合我的问题,或者我是否以错误的方式实现它。谢谢大家!

编辑:图像是固定大小的对象,在固定背景上移动。理想情况下,假设每个图像的所有内容都是相同的,除了对象的位置,我希望2D表示将显示对象的轨迹,即每个图像中对象的x和y(或至少是它们的某种可逆变换)。下面我附上了使用欧几里德距离(第一个)和瓦瑟斯坦距离(第二个)获得的图像。正如您所看到的,在第一种情况下,轨迹非常清晰(例如,直线大部分在它们应该相交的地方相交,因此拓扑结构大部分保持不变)。第二种情况完全是一团糟


您试图解决的问题是什么?还请添加生成的2D图像,并简要描述它们的优缺点。最后,如果您可以在示例代码中生成一些玩具数据以使其可复制,那将是非常棒的。