TSNE在sklearn python中

时间:2016-04-26 09:41:38

标签: python scikit-learn

我在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)

它仍然给我相同的结果......

enter image description here

你有解决方案吗?

1 个答案:

答案 0 :(得分:0)

这是因为默认def dictionary(self, shift): ''' For Caesar cipher. shift (integer): the amount by which to shift every letter of the alphabet. 0 <= shift < 26 Returns: a dictionary mapping a letter (string) to another letter (string). ''' #create empty dictionary alphaDict = {} #retrieve alphabet in upper and lower case letters = string.ascii_lowercase + string.ascii_uppercase #build dictionary with shift for i in range(len(letters)): if letters[i].islower() == True: alphaDict = {letters[i]: letters[(i + shift) % 26]} else: alphaDict = {letters[i]: letters[((i + shift) % 26) + 26]} return alphaDict metric。所以实际上与默认设置相比,你没有改变任何东西。您可以在here查看默认参数。 我也在这里复制并粘贴它们:

euclidean