正在打开模型库
正在打开模型库
把样本分成 K 组,让组内尽量近、组间尽量远。
先猜几个中心,再把点归到最近中心,然后重算中心,反复直到稳定。
题目要“分成几类并解释每类特征”时,它是默认起点。
Python 代码
import numpy as np
X = np.array([[1, 2], [1.2, 1.9], [8, 8], [8.2, 7.8], [0.8, 2.1], [7.9, 8.3]])
K, rng = 2, np.random.default_rng(0)
centers = X[rng.choice(len(X), K, replace=False)]
for _ in range(10):
dist = ((X[:, None, :] - centers[None, :, :]) ** 2).sum(axis=2)
labels = dist.argmin(axis=1)
centers = np.vstack([X[labels == k].mean(axis=0) for k in range(K)])
print(labels, centers)