本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。