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 计算两个数组的对应元素之间的距离。