pairwise_distances#

sklearn.metrics.pairwise_distances(X, Y=None, metric='euclidean', *, n_jobs=None, force_all_finite='deprecated', ensure_all_finite=None, **kwds)[源代码]#

根据一个矩阵X和可选的Y计算距离矩阵。

该方法采用一个载体数组或一个距离矩阵,并返回一个距离矩阵。如果输入是一个载体数组,则计算距离。如果输入是距离矩阵,则返回它。如果输入是非数字数据的集合(例如字符串列表或布尔数组),则必须传递自定义指标。

该方法提供了一种将距离矩阵作为输入的安全方法,同时保持与许多其他采用载体数组的算法的兼容性。

如果给定Y(默认为无),则返回的矩阵是X和Y的数组之间的成对距离。

度量的有效值为:

  • 来自scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan'] .这些指标支持稀疏矩阵输入。 ['nan_euclidean'] 但它还不支持稀疏矩阵。

  • 来自scipy.spatial.Distance: ['braycurtis', 'canberra', 'chebyshev', 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', 'yule'] 有关这些指标的详细信息,请参阅scipy.spatial.Distance的文档。这些度量不支持稀疏矩阵输入。

备注

'kulsinski' SciPy 1.9已废弃,并将在SciPy 1.11中删除。

备注

'matching' 已在SciPy 1.9中删除(使用 'hamming' 相反)。

请注意,对于“cityblock '、“cos”和“欧几里得”(这些是有效的scipy.spatial.Distance指标),将使用scikit-learn实现,它更快并且支持稀疏矩阵(除了“cityblock ')。有关scikit-learn指标的详细描述,请参阅 sklearn.metrics.pairwise.distance_metrics 功能

阅读更多的 User Guide .

参数:
X形状(n_samples_X,n_samples_X)的{类数组,稀疏矩阵}或 (n_samples_X,n_features)

样本之间成对距离的数组,或特征数组。如果metric ==“预先计算”,则数组的形状应为(n_samples_X,n_samples_X),否则应为(n_samples_X,n_features)。

Y{array-like, sparse matrix} of shape (n_samples_Y, n_features), default=None

可选的第二特征阵列。仅在公制时允许!=“预先计算的”。

metric字符串或可调用,默认='欧几里德'

计算要素数组中实例之间的距离时使用的指标。如果metric是字符串,则它必须是scipy.spatial.Distance.pdist为其指标参数允许的选项之一,或者是中列出的指标 pairwise.PAIRWISE_DISTANCE_FUNCTIONS .如果度量是“预先计算的”,则假设X是距离矩阵。或者,如果metric是一个可调用的函数,则会对每对实例(行)调用它并记录结果值。可调用对象应该从X中获取两个数组作为输入,并返回一个指示它们之间距离的值。

n_jobsint,默认=无

用于计算的作业数。这是通过将成对矩阵分解为n_jobs偶数切片并使用多线程计算它们来实现的。

None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

“欧几里得”和“cos”指标严重依赖于已经是多线程的BLAS。所以,增加 n_jobs 可能会导致超额订阅并迅速降低性能。

force_all_finitebool或'allow-nan',默认值=True

是否在数组中的pp.inf、pp.nan、pd. NA上引发错误。忽略中列出的指标 pairwise.PAIRWISE_DISTANCE_FUNCTIONS .可能性有:

  • True:强制数组的所有值为有限。

  • False:接受数组中的NP.inf、NP.nan、PD.NA。

  • ' allow-nan ':仅接受数组中的pp.nan和pd.NA值。价值观不可能无限。

Added in version 0.22: force_all_finite 接受字符串 'allow-nan' .

在 0.23 版本发生变更: 接受 pd.NA 并将其转换为 np.nan .

自 1.6 版本弃用: force_all_finite 更名为 ensure_all_finite 并将在1.8中删除。

ensure_all_finitebool或'allow-nan',默认值=True

是否在数组中的pp.inf、pp.nan、pd. NA上引发错误。忽略中列出的指标 pairwise.PAIRWISE_DISTANCE_FUNCTIONS .可能性有:

  • True:强制数组的所有值为有限。

  • False:接受数组中的NP.inf、NP.nan、PD.NA。

  • ' allow-nan ':仅接受数组中的pp.nan和pd.NA值。价值观不可能无限。

Added in version 1.6: force_all_finite 更名为 ensure_all_finite .

**kwds可选关键字参数

任何进一步的参数都直接传递给距离函数。如果使用scipy.spatial.Distance指标,则参数仍然依赖于指标。有关使用示例,请参阅scipy文档。

返回:
Dnd形状数组(n_samples_X,n_samples_X)或 (n_samples_X,n_samples_Y)

一个距离矩阵D,使得D_{i,j}是给定矩阵X的第i个和第j个向量之间的距离,如果Y是None。如果Y不为None,则D_{i,j}是X的第i个数组与Y的第j个数组之间的距离。

参见

pairwise_distances_chunked

执行与此函数相同的计算,但返回距离矩阵块的生成器,以限制内存使用。

sklearn.metrics.pairwise.paired_distances

计算两个数组对应元素之间的距离。

示例

>>> from sklearn.metrics.pairwise import pairwise_distances
>>> X = [[0, 0, 0], [1, 1, 1]]
>>> Y = [[1, 0, 0], [1, 1, 0]]
>>> pairwise_distances(X, Y, metric='sqeuclidean')
array([[1., 2.],
       [2., 1.]])