值错误:使用sklearn TSNE时,度量值“cosine”对于算法“ball_-tree”无效

2024-04-25 19:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

程序包版本:

数量:1.13.3

学习:0.19.0

压缩比:0.19.1

我有一个稠密矩阵svd_matrix

svd_matrix.shape
>>> (30000,50)

我想在scikit TSNE实现中使用“cosine”作为度量来训练这一点

^{pr2}$

但是我得到了上面的错误。上周我在训练这个模型,它工作得很好,但我同时更新了我的软件包版本,但我不认为这会引起问题?不管怎样,包版本在上面。在

algorithm不是manifold.TSNE的参数,所以我不能像建议的那样给'brute'作为参数{a1}

有人能告诉我这里出了什么问题吗?我该怎么解决这个问题?谢谢你


Tags: 版本程序包参数数量度量错误矩阵scikit
1条回答
网友
1楼 · 发布于 2024-04-25 19:43:35

TSNE的代码(0.19!!!)似乎在every case中使用了BallTree(但是预计算的):

neighbors_method = 'ball_tree'
if (self.metric == 'precomputed'):
    neighbors_method = 'brute'
knn = NearestNeighbors(algorithm=neighbors_method, n_neighbors=k,
                               metric=self.metric)

现在,在BallTree中允许哪些指标:

^{pr2}$

TSNE的代码库is quite active,可能有一些重大的变化来描述您的观察结果,而且事实上,它在开始工作之前没有检查度量。在

This pull-request似乎增加了对cosine度量的支持,在本例中不使用BallTree!由于这似乎是合并的,我认为如果你从当前的主分支安装sklearn,它将工作!在

编辑:它实际上在主分支中工作(如预期的那样)!

在从当前主分支(e049b1d35fba9fa688d81a6511be38a73ae824cc;17.10.2017)安装sklearn时,以下代码没有任何错误(只是一个演示)。在

from sklearn.datasets.samples_generator import make_blobs
from sklearn.manifold import TSNE

X, y = make_blobs(n_samples=10, centers=3, n_features=2,
              random_state=0)

tsne = TSNE(n_components=2, random_state=0, metric='cosine')
matrix_2d = tsne.fit_transform(X)
# OK!

相关问题 更多 >