scipy.cluster.vq.
vq#
- scipy.cluster.vq.vq(obs, code_book, check_finite=True)[原始碼]#
從碼書中將代碼分配給觀測值。
將碼書中的代碼分配給每個觀測值。將 ‘M’ x ‘N’ obs 陣列中的每個觀測向量與碼書中的質心進行比較,並分配最接近質心的代碼。
obs 中的特徵應具有單位變異數,這可以通過將它們傳遞到 whiten 函數來實現。碼書可以使用 k-means 演算法或不同的編碼演算法創建。
- 參數:
- obsndarray
‘M’ x ‘N’ 陣列的每一列都是一個觀測值。這些列是在每次觀測期間看到的「特徵」。特徵必須先使用 whiten 函數或類似的函數進行白化。
- code_bookndarray
碼書通常使用 k-means 演算法生成。陣列的每一列都包含不同的代碼,而這些行是代碼的特徵。
>>> # f0 f1 f2 f3 >>> code_book = [ ... [ 1., 2., 3., 4.], #c0 ... [ 1., 2., 3., 4.], #c1 ... [ 1., 2., 3., 4.]] #c2
- check_finitebool, 可選
是否檢查輸入矩陣是否僅包含有限數字。 禁用可能會提高效能,但如果輸入確實包含無限或 NaN,則可能會導致問題(崩潰,無法終止)。 預設值:True
- 返回:
- codendarray
一個長度為 M 的陣列,其中包含每個觀測值的碼書索引。
- distndarray
觀測值與其最近代碼之間的失真(距離)。
範例
>>> import numpy as np >>> from scipy.cluster.vq import vq >>> code_book = np.array([[1., 1., 1.], ... [2., 2., 2.]]) >>> features = np.array([[1.9, 2.3, 1.7], ... [1.5, 2.5, 2.2], ... [0.8, 0.6, 1.7]]) >>> vq(features, code_book) (array([1, 1, 0], dtype=int32), array([0.43588989, 0.73484692, 0.83066239]))