sklearn.metrics.pairwise_distances

sklearn.metrics.pairwise_distances

sklearn.metrics.pairwise_distances(X, Y=None, metric=’euclidean’, n_jobs=None, **kwds)

根据向量数组X和可选的Y计算距离矩阵。
此方法采用向量数组或距离矩阵,然后返回距离矩阵。 如果输入是向量数组,则计算距离。 如果输入是距离矩阵,则将其返回。
如果给出了Y(默认值为None),则返回的矩阵是数组之间从X和Y开始的成对距离。

参数:

X : array [n_samples_a, n_samples_a] 样本之间的成对距离数组或特征数组。
Y : array [n_samples_b, n_features],可选 可选的第二要素数组。 仅当metric!=“ precomputed”时才允许。
metric : string, or callable 计算要素数组中实例之间的距离时使用的度量。 如果metric是字符串,则它必须是scipy.spatial.distance.pdist为其metric参数允许的选项之一,或者是pairwise.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量标准。 如果度量是“预先计算的”,则假定X为距离矩阵。 或者,如果metric是可调用函数,则在每对实例(行)上调用它,并记录结果值。 可调用对象应将X的两个数组作为输入,并返回一个指示它们之间距离的值。
n_jobs : int or None,可选 用于计算的作业数。 通过将成对矩阵分解为n_jobs个偶数切片并并行计算它们。除非在joblib.parallel_backend上下文中,否则None表示1。 -1表示使用所有处理器。1表示不使用任何并行计算代码,这对于调试很有用。对于小于-1的n_job,将使用(n_cpus +1 + n_jobs)。 因此,对于n_jobs = -2,除一个以外的所有CPU被使用。
** kwds:可选关键字参数 任何其他参数都直接传递给距离函数。 如果使用scipy.spatial.distance度量,则参数仍取决于度量。

返回:

D : array [n_samples_a, n_samples_a] or [n_samples_a, n_samples_b] 如果Y为None,则距离矩阵D使得D{i,j}是给定矩阵X的第i个向量和第j个向量之间的距离。 如果Y不为None,则D{i,j}是X的第i个数组和Y的第j个数组之间的距离。

metric的有效值为:

  • scikit-learn: [‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’],这些指标支持稀疏矩阵输入。
  • scipy.spatial.distance: [‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’],这些度量标准不支持稀疏矩阵输入。

例子

>>>from sklearn.metrics.pairwise import pairwise_distances
>>>a=[[1,3],[2,2]]
>>>pairwise_distances(a,metric="euclidean")
array([[0.        , 1.41421356],
       [1.41421356, 0.        ]])
#结果数组的第一行第二列表示a[1]与a[2]的距离

>>>b=[[1,3],[2,2],[1,1]]
>>>pairwise_distances(b,metric="euclidean")
array([[0.        , 1.41421356, 2.        ],
       [1.41421356, 0.        , 1.41421356],
       [2.        , 1.41421356, 0.        ]])
#结果数组的第一行第三列表示a[1]与a[3]的距离

类似用法
sklearn.metrics.pairwise.paired_distances 计算两个数组的对应元素之间的距离。

你可能感兴趣的:(scikit-learn,(sklearn))