我在这个函数中输入了不同的值并观察了输出。但是我在输出的内容中找不到可预测的模式。
然后我尝试挖掘函数本身,但它令人困惑,因为它可以进行许多不同的计算。
根据文档:
Compute the distance matrix from a vector array X and optional Y.
我看到它返回一个高度和宽度矩阵,等于输入的嵌套列表的数量,这意味着它正在比较每个列表。
但除此之外,我很难理解它在做什么以及价值来自哪里。
我试过的例子:
pairwise_distances([[1]], metric='correlation')
>>> array([[0.]])
pairwise_distances([[1], [1]], metric='correlation')
>>> array([[ 0., nan],
>>> [nan, 0.]])
# returns same as last input although input values differ
pairwise_distances([[1], [2]], metric='correlation')
>>> array([[ 0., nan],
>>> [nan, 0.]])
pairwise_distances([[1,2], [1,2]], metric='correlation')
>>> array([[0.00000000e+00, 2.22044605e-16],
>>> [2.22044605e-16, 0.00000000e+00]])
# returns same as last input although input values differ
# I incorrectly expected more distance because input values differ more
pairwise_distances([[1,2], [1,3]], metric='correlation')
>>> array([[0.00000000e+00, 2.22044605e-16],
>>> [2.22044605e-16, 0.00000000e+00]])
用 Scipy 计算相关距离
2.22044605e-16
如果 scipy 返回0.0
相同的输入,我不明白 sklearn值的来源。
# Scipy
import scipy
scipy.spatial.distance.correlation([1,2], [1,2])
>>> 0.0
# Sklearn
pairwise_distances([[1,2], [1,2]], metric='correlation')
>>> array([[0.00000000e+00, 2.22044605e-16],
>>> [2.22044605e-16, 0.00000000e+00]])
我不是在寻找高级别的解释,而是如何计算数字的示例。