Sci-kit学习pairwise_distances是不精确的?

时间:2014-10-31 10:45:41

标签: scikit-learn precision

scikit-learn函数pairwise_distances提供距离数组X的距离矩阵。 但是对于某些输入,结果似乎并不准确。

示例:

from sklearn.metrics.pairwise import pairwise_distances
X = [[-0.903858372568, -0.5521578], [-0.903858372568, -0.55215782]]
print pairwise_distances(X)

提供以下输出:

[[ 0.  0.]
[ 0.  0.]]

虽然距离为0.00000002。

第二个例子:

X = [[-0.903858372568, -0.5521578], [-0.903858372568, -0.552157821]]

给出

[[  0.00000000e+00   2.10734243e-08]
[  2.10734243e-08   0.00000000e+00]]

这里有一个距离,但只有第一个数字才正确。

对于我的应用,如果输出可以为零,尽管存在距离,则是不合需要的。 有没有提高精度的好方法?

1 个答案:

答案 0 :(得分:2)

我没有深入研究为什么scikit-learn会给出如此不切实际的结果,但似乎scipy提供了更好的精确度。试试这个:

from scipy.spatial.distance import pdist, squareform
squareform(pdist(X))

例如,

X = [[-0.903858372568, -0.5521578], [-0.903858372568, -0.552157821]]

给出

array([[  0.00000000e+00,   2.10000000e-08],
       [  2.10000000e-08,   0.00000000e+00]])