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.]])