成对距离#
- sklearn.metrics.pairwise_distances(X, Y=None, metric='euclidean', *, n_jobs=None, force_all_finite='deprecated', ensure_all_finite=None, **kwds)[source]#
- 计算向量数组 X 和可选的 Y 之间的距离矩阵。 - 此方法接受向量数组或距离矩阵,并返回距离矩阵。如果输入是向量数组,则计算距离;如果输入是距离矩阵,则直接返回该矩阵。如果输入是非数值数据的集合(例如字符串列表或布尔数组),则必须传递自定义度量。 - 此方法提供了一种安全的方式来将距离矩阵作为输入,同时保持与许多其他接受向量数组的算法的兼容性。 - 如果提供 Y(默认为 None),则返回的矩阵是 X 和 Y 中数组之间的成对距离。 - 度量 metric 的有效值为: - 来自 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'、'cosine' 和 'euclidean'(它们是有效的 scipy.spatial.distance 度量),将使用 scikit-learn 实现,它更快并且支持稀疏矩阵('cityblock' 除外)。有关 scikit-learn 度量的详细说明,请参阅 - sklearn.metrics.pairwise.distance_metrics函数。- 在 用户指南 中了解更多信息。 - 参数:
- X形状为 (n_samples_X, n_samples_X) 或 (n_samples_X, n_features) 的 {array-like, sparse matrix}
- 样本之间的成对距离数组,或特征数组。如果 metric == “precomputed”,则数组的形状应为 (n_samples_X, n_samples_X),否则为 (n_samples_X, n_features)。 
- Y形状为 (n_samples_Y, n_features) 的 {array-like, sparse matrix},默认为 None
- 可选的第二个特征数组。仅当 metric != “precomputed” 时才允许。 
- metricstr 或 callable,默认为 'euclidean'
- 计算特征数组中实例之间距离时使用的度量。如果 metric 是字符串,则它必须是 scipy.spatial.distance.pdist 对其 metric 参数允许的选项之一,或者是在 - pairwise.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量。如果 metric 为“precomputed”,则假设 X 是距离矩阵。或者,如果 metric 是可调用函数,则会对每一对实例(行)调用它,并记录结果值。可调用对象应将 X 中的两个数组作为输入,并返回一个值,指示它们之间的距离。
- n_jobsint,默认为 None
- 用于计算的作业数。这是通过将成对矩阵分解成 n_jobs 个均匀切片并使用多线程计算它们来实现的。 - None表示 1,除非在- joblib.parallel_backend上下文中。- -1表示使用所有处理器。有关更多详细信息,请参阅 词汇表。- “euclidean”和“cosine”度量严重依赖于 BLAS,而 BLAS 已经是多线程的。因此,增加 - n_jobs可能会导致过度订阅并迅速降低性能。
- force_all_finitebool 或 'allow-nan',默认为 True
- 是否对数组中的 np.inf、np.nan、pd.NA 抛出错误。对于 - pairwise.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量,此参数将被忽略。可能性包括:- True:强制数组的所有值为有限值。 
- False:接受数组中的 np.inf、np.nan、pd.NA。 
- ‘allow-nan’:仅接受数组中的 np.nan 和 pd.NA 值。值不能是无穷大。 
 - 版本 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
- 是否对数组中的 np.inf、np.nan、pd.NA 抛出错误。对于 - pairwise.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量,此参数将被忽略。可能性包括:- True:强制数组的所有值为有限值。 
- False:接受数组中的 np.inf、np.nan、pd.NA。 
- ‘allow-nan’:仅接受数组中的 np.nan 和 pd.NA 值。值不能是无穷大。 
 - 版本 1.6 中添加: - force_all_finite已重命名为- ensure_all_finite。
- **kwds可选关键字参数
- 任何其他参数都将直接传递给距离函数。如果使用 scipy.spatial.distance 度量,则参数仍然取决于度量。有关用法示例,请参阅 scipy 文档。 
 
- 返回:
- D形状为 (n_samples_X, n_samples_X) 或 (n_samples_X, n_samples_Y) 的 ndarray
- 距离矩阵 D,使得如果 Y 为 None,则 D_{i, j} 是给定矩阵 X 的第 i 个和第 j 个向量之间的距离。如果 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.]]) 
 
     
