scipy.cluster.hierarchy.
is_valid_im#
- scipy.cluster.hierarchy.is_valid_im(R, warning=False, throw=False, name=None)[原始碼]#
如果傳遞的不一致性矩陣有效,則返回 True。
它必須是一個 \(n\) 乘 4 的雙精度浮點數陣列。標準差
R[:,1]
必須是非負數。連結計數R[:,2]
必須是正數且不大於 \(n-1\)。- 參數:
- Rndarray
要檢查有效性的不一致性矩陣。
- warningbool, optional
當為 True 時,如果傳遞的連結矩陣無效,則發出 Python 警告。
- throwbool, optional
當為 True 時,如果傳遞的連結矩陣無效,則拋出 Python 異常。
- namestr, optional
此字串指的是無效連結矩陣的變數名稱。
- 返回:
- bbool
如果不一致性矩陣有效,則為 True。
參見
linkage
有關連結矩陣的描述。
inconsistent
用於建立不一致性矩陣。
範例
>>> from scipy.cluster.hierarchy import ward, inconsistent, is_valid_im >>> from scipy.spatial.distance import pdist
給定一個資料集
X
,我們可以應用分群方法來獲得連結矩陣Z
。scipy.cluster.hierarchy.inconsistent
也可以用於獲得與此分群過程相關聯的不一致性矩陣R
>>> X = [[0, 0], [0, 1], [1, 0], ... [0, 4], [0, 3], [1, 4], ... [4, 0], [3, 0], [4, 1], ... [4, 4], [3, 4], [4, 3]]
>>> Z = ward(pdist(X)) >>> R = inconsistent(Z) >>> Z array([[ 0. , 1. , 1. , 2. ], [ 3. , 4. , 1. , 2. ], [ 6. , 7. , 1. , 2. ], [ 9. , 10. , 1. , 2. ], [ 2. , 12. , 1.29099445, 3. ], [ 5. , 13. , 1.29099445, 3. ], [ 8. , 14. , 1.29099445, 3. ], [11. , 15. , 1.29099445, 3. ], [16. , 17. , 5.77350269, 6. ], [18. , 19. , 5.77350269, 6. ], [20. , 21. , 8.16496581, 12. ]]) >>> R array([[1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1. , 0. , 1. , 0. ], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [1.14549722, 0.20576415, 2. , 0.70710678], [2.78516386, 2.58797734, 3. , 1.15470054], [2.78516386, 2.58797734, 3. , 1.15470054], [6.57065706, 1.38071187, 3. , 1.15470054]])
現在我們可以使用
scipy.cluster.hierarchy.is_valid_im
來驗證R
是否正確>>> is_valid_im(R) True
但是,如果
R
構造錯誤(例如,其中一個標準差設定為負值),則檢查將會失敗>>> R[-1,1] = R[-1,1] * -1 >>> is_valid_im(R) False