不,没有必要如此,但是,以一种令人费解的方式,这是T-SNE的目标。
在深入探讨答案之前,让我们从数学和直观角度看一些基本定义。
[RdX1个,。。。, Xñ∈ [RdX ∈ řd| | X1个- x | | ≤ 。。。≤ | | Xñ− x | |[Rd
dÿXddd+ k。因此,我们有一个直觉,那就是在不同尺寸上保持距离,或者至少这是我们的目标。让我们尝试用一些数学来证明这一点。
pj | 一世= e x p (- | | xĴ− x一世| |22个σ2)∑k ≠ ie x p (− | | xĴ− x一世| |22个σ2)[Rķ
现在最后是一个简洁的编码示例,它也演示了这个概念。
from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
X = [[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]
y = [0,1,2,3,4,5,6,7,8,9]
neighs = KNeighborsClassifier(n_neighbors=3)
neighs.fit(X, y)
X_embedded = TSNE(n_components=1).fit_transform(X)
neighs_tsne = KNeighborsClassifier(n_neighbors=3)
neighs_tsne.fit(X_embedded, y)
print(neighs.predict([[1.1]]))
>>>[0]
print(neighs_tsne.predict([[1.1]]))
>>>[0]
尽管这是一个非常幼稚的示例,并且没有反映出复杂性,但是通过一些简单示例的实验,它确实可以工作。
编辑:另外,针对问题本身添加一些要点,因此没有必要是这种情况,但是,通过数学对其进行合理化将证明您没有具体结果(没有确定的是或否) 。
我希望这可以消除您对TSNE的一些担忧。