AI

K-Medoids

Euclidean Distance

\[ d(X_i,M_j)= \sqrt{\sum_{k=1}^{p}(x_{ik}-m_{jk})^2} \]

Assignment

\[ C_i=\arg\min_{M_j\in M} d(X_i,M_j) \]

Total Cost

\[ J(M)= \sum_{i=1}^{n} \min_{M_j\in M} d(X_i,M_j) \]

Objective function

\[ \min_M J(M) \]

Swap

\[ \Delta J=J_{\text{new}}-J_{\text{old}} \]
\[ \Delta J<0 \Rightarrow \text{Accept swap} \] \[ \Delta J\geq0 \Rightarrow \text{Reject swap} \]

Example

A11
B22
C21
D65
E75
F86

Code

Install Extra Sklearn

pip install scikit-learn-extra

Build model

from sklearn_extra.cluster import KMedoids
X = [
    [1, 1],
    [2, 2],
    [2, 1],
    [6, 5],
    [7, 5],
    [8, 6],
]
km = KMedoids(n_clusters=2)
km.fit(X)
print(km.labels_)
print(km.cluster_centers_)