SciPy

scipy.cluster.hierarchy.inconsistent

scipy.cluster.hierarchy.inconsistent(Z, d=2)[source]

Calculate inconsistency statistics on a linkage matrix.

Parameters:

Z : ndarray

The \((n-1)\) by 4 matrix encoding the linkage (hierarchical clustering). See linkage documentation for more information on its form.

d : int, optional

The number of links up to d levels below each non-singleton cluster.

Returns:

R : ndarray

A \((n-1)\) by 4 matrix where the i‘th row contains the link statistics for the non-singleton cluster i. The link statistics are computed over the link heights for links \(d\) levels below the cluster i. R[i,0] and R[i,1] are the mean and standard deviation of the link heights, respectively; R[i,2] is the number of links included in the calculation; and R[i,3] is the inconsistency coefficient,

\[\frac{\mathtt{Z[i,2]} - \mathtt{R[i,0]}} {R[i,1]}\]

Notes

This function behaves similarly to the MATLAB(TM) inconsistent function.

Examples

>>> from scipy.cluster.hierarchy import inconsistent, linkage
>>> from matplotlib import pyplot as plt
>>> X = [[i] for i in [2, 8, 0, 4, 1, 9, 9, 0]]
>>> Z = linkage(X, 'ward')
>>> print(Z)
[[  5.           6.           0.           2.        ]
 [  2.           7.           0.           2.        ]
 [  0.           4.           1.           2.        ]
 [  1.           8.           1.15470054   3.        ]
 [  9.          10.           2.12132034   4.        ]
 [  3.          12.           4.11096096   5.        ]
 [ 11.          13.          14.07183949   8.        ]]
>>> inconsistent(Z)
array([[ 0.        ,  0.        ,  1.        ,  0.        ],
       [ 0.        ,  0.        ,  1.        ,  0.        ],
       [ 1.        ,  0.        ,  1.        ,  0.        ],
       [ 0.57735027,  0.81649658,  2.        ,  0.70710678],
       [ 1.04044011,  1.06123822,  3.        ,  1.01850858],
       [ 3.11614065,  1.40688837,  2.        ,  0.70710678],
       [ 6.44583366,  6.76770586,  3.        ,  1.12682288]])