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]]
这里有一个距离,但只有第一个数字才正确。
对于我的应用,如果输出可以为零,尽管存在距离,则是不合需要的。 有没有提高精度的好方法?
答案 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]])