本文简要介绍python语言中 sklearn.metrics.pairwise_distances_chunked
的用法。
用法:
sklearn.metrics.pairwise_distances_chunked(X, Y=None, *, reduce_func=None, metric='euclidean', n_jobs=None, working_memory=None, **kwds)
使用可选的缩减逐块生成距离矩阵。
在不需要一次存储所有成对距离矩阵的情况下,这用于计算
working_memory
大小的块中的成对距离。如果给定reduce_func
,它将在每个块上运行,并将其返回值连接到列表、数组或稀疏矩阵中。- X:ndarray 形状 (n_samples_X, n_samples_X) 或 (n_samples_X, n_features)
样本之间的成对距离数组或特征数组。如果 metric='precomputed',则数组的形状应为 (n_samples_X, n_samples_X),否则为 (n_samples_X, n_features)。
- Y:ndarray 形状(n_samples_Y,n_features),默认=None
可选的第二个特征数组。仅当 metric != “precomputed” 时才允许。
- reduce_func:可调用,默认=无
应用于距离矩阵的每个块的函数,将其减少到所需的值。
reduce_func(D_chunk, start)
被重复调用,其中D_chunk
是成对距离矩阵的连续垂直切片,从start
行开始。它应该返回以下之一:无;长度为D_chunk.shape[0]
的数组、列表或稀疏矩阵;或此类对象的元组。返回 None 对就地操作很有用,而不是减少。如果没有,pairwise_distances_chunked 返回距离矩阵的垂直块的生成器。
- metric:str 或可调用,默认='euclidean'
计算特征数组中实例之间的距离时使用的度量。如果 metric 是字符串,则它必须是 scipy.spatial.distance.pdist 为其 metric 参数允许的选项之一,或者是pairwise.PAIRWISE_DISTANCE_FUNCTIONS 中列出的指标。如果度量为“precomputed”,则假定 X 是距离矩阵。或者,如果 metric 是可调用函数,则在每对实例(行)上调用它并记录结果值。该可调用函数应将 X 中的两个数组作为输入,并返回一个指示它们之间距离的值。
- n_jobs:整数,默认=无
用于计算的作业数。这是通过将成对矩阵分解为 n_jobs 甚至切片并并行计算它们来实现的。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。- working_memory:整数,默认=无
为临时距离矩阵块寻求的最大内存。当 None(默认)时,使用
sklearn.get_config()['working_memory']
的值。- `**kwds`:可选关键字参数
任何其他参数都直接传递给距离函数。如果使用 scipy.spatial.distance 指标,参数仍然依赖于指标。有关使用示例,请参阅 scipy 文档。
- D_chunk:{ndarray,稀疏矩阵}
距离矩阵的连续切片,可选地由
reduce_func
处理。
参数:
生成(Yield):
例子:
没有reduce_func:
>>> import numpy as np >>> from sklearn.metrics import pairwise_distances_chunked >>> X = np.random.RandomState(0).rand(5, 3) >>> D_chunk = next(pairwise_distances_chunked(X)) >>> D_chunk array([[0. ..., 0.29..., 0.41..., 0.19..., 0.57...], [0.29..., 0. ..., 0.57..., 0.41..., 0.76...], [0.41..., 0.57..., 0. ..., 0.44..., 0.90...], [0.19..., 0.41..., 0.44..., 0. ..., 0.51...], [0.57..., 0.76..., 0.90..., 0.51..., 0. ...]])
检索半径 r 内的所有邻居和平均距离:
>>> r = .2 >>> def reduce_func(D_chunk, start): ... neigh = [np.flatnonzero(d < r) for d in D_chunk] ... avg_dist = (D_chunk * (D_chunk < r)).mean(axis=1) ... return neigh, avg_dist >>> gen = pairwise_distances_chunked(X, reduce_func=reduce_func) >>> neigh, avg_dist = next(gen) >>> neigh [array([0, 3]), array([1]), array([2]), array([0, 3]), array([4])] >>> avg_dist array([0.039..., 0. , 0. , 0.039..., 0. ])
在每个样本定义 r 的地方,我们需要使用
start
:>>> r = [.2, .4, .4, .3, .1] >>> def reduce_func(D_chunk, start): ... neigh = [np.flatnonzero(d < r[i]) ... for i, d in enumerate(D_chunk, start)] ... return neigh >>> neigh = next(pairwise_distances_chunked(X, reduce_func=reduce_func)) >>> neigh [array([0, 3]), array([0, 1]), array([2]), array([0, 3]), array([4])]
通过减少
working_memory
来强制生成 row-by-row :>>> gen = pairwise_distances_chunked(X, reduce_func=reduce_func, ... working_memory=0) >>> next(gen) [array([0, 3])] >>> next(gen) [array([0, 1])]
相关用法
- Python sklearn pair_confusion_matrix用法及代码示例
- Python sklearn paired_distances用法及代码示例
- Python sklearn parallel_backend用法及代码示例
- Python sklearn partial_dependence用法及代码示例
- Python sklearn parametrize_with_checks用法及代码示例
- Python sklearn power_transform用法及代码示例
- Python sklearn.metrics.plot_confusion_matrix用法及代码示例
- Python sklearn.metrics.plot_roc_curve用法及代码示例
- Python sklearn plot_tree用法及代码示例
- Python sklearn permutation_importance用法及代码示例
- Python sklearn.metrics.plot_det_curve用法及代码示例
- Python sklearn precision_score用法及代码示例
- Python sklearn.inspection.plot_partial_dependence用法及代码示例
- Python sklearn precision_recall_fscore_support用法及代码示例
- Python sklearn polynomial_kernel用法及代码示例
- Python sklearn precision_recall_curve用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.metrics.pairwise_distances_chunked。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。