【发布时间】:2016-08-01 10:08:41
【问题描述】:
我在使用余弦相似度对我的数据集执行 TSNE 时遇到了一个小问题。
我已经计算了我所有向量的余弦相似度,所以我有一个包含余弦相似度的方阵:
A = [[ 1 0.7 0.5 0.6 ]
[ 0.7 1 0.3 0.4 ]
[ 0.5 0.3 1 0.1 ]
[ 0.6 0.4 0.1 1 ]]
然后,我正在使用这样的 TSNE:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="precomputed")
Y = model.fit_transform(A)
但我不确定使用预先计算的度量是否能保持我的余弦相似度:
#[documentation][1]
If metric is “precomputed”, X is assumed to be a distance matrix
但是当我尝试使用余弦度量时,我得到了一个错误:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="cosine")
Y = model.fit_transform(A)
raise ValueError("All distances should be positive, either "
ValueError: All distances should be positive, either the metric or
precomputed distances given as X are not correct
所以我的问题是,如何在现有数据集(相似度矩阵)上使用余弦度量来执行 TSNE?
【问题讨论】:
-
scikit学习什么版本? - 代码对我有用。
-
抱歉,我更新了我的代码,我使用函数
fit_transform来转换我的输入。错误似乎来自那里......我编写了一个不起作用的小部分:from sklearn import manifold import numpy as np A = np.matrix([[1, 0.7,0.5,0.6],[1, 0.7,0.5,0.6],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]]) model = manifold.TSNE(metric="cosine") Y = model.fit_transform(A)
标签: scikit-learn cosine-similarity