我在python中使用t-SNE有一个小问题。
我取一个小的数据集:
A = np.matrix([[0.2, 0.3, 0.6, 0.8],
[0.2, 0.25, 0.55, 0.85],
[0.2, 0.3, 0.6, 0.8],
[0.64, 0.8, 0.2, 0.2],
[0.65, 0.8, 0.2, 0.2],
[0.65, 0.75, 0.2, 0.15],
[0.7, 0.8, 0.2, 0.2]])然后,我使用以下命令对其运行t-SNE:
tsne = manifold.TSNE(n_components=2,random_state=0, metric=Distance)这里,Distance是一个函数,它接受两个数组作为输入,计算它们之间的距离并返回距离。此函数起作用。如果我改变我的值,我可以看到输出发生了变化。
def Distance(X,Y):
Result = spatial.distance.euclidean(X,Y)
return Result但可视化不会因为t-sne而改变...可视化并没有考虑到我的点之间的距离。
如果我去掉这个指标:
tsne = manifold.TSNE(n_components=2,random_state=0)它仍然会给我同样的结果...

你有什么解决方案吗?
发布于 2016-08-01 12:01:25
这是因为默认的metric是euclidean。因此,与默认设置相比,实际上您没有更改任何内容。您可以在here上看到默认参数。我还在这里复制并粘贴了它们:
class sklearn.manifold.TSNE(n_components=2, perplexity=30.0, early_exaggeration=4.0, learning_rate=1000.0, n_iter=1000, n_iter_without_progress=30, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0, random_state=None, method='barnes_hut', angle=0.5)https://stackoverflow.com/questions/36861098
复制相似问题