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