欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习笔记 | KMeans聚类 (K均值聚类)

程序员文章站 2022-07-14 19:28:28
...

KMeans算法步骤

  1. 选中心:随机选取K个样本作为类中心。
  2. 求距离:计算各样本与各类中心的距离。
  3. 归类:将各样本归于最近的类中心点。
  4. 求新类中心:求各类的样本的均值,作为新的类中心。
  5. 判定结果:若类中心不再发生变动或达到迭代次数,算法结束,否则回到第2步。
    学习笔记 | KMeans聚类 (K均值聚类)
    学习笔记 | KMeans聚类 (K均值聚类)

举例:鸢尾花数据聚类

from sklearn.datasets import load_iris
import numpy as np

iris = load_iris()
data = iris.data
print(data.shape)
n = len(data)
k = 3

dist = np.zeros([n, k+1])
# 1、选中心
center = data[:k, :]
center_new = np.zeros([k, data.shape[1]])
while True:
    # 2、求距离
    for i in range(n):
        for j in range(k):
            dist[i, j] = np.sqrt(sum((data[i, :] - center[j, :])**2))
        dist[i, k] = np.argmin(dist[i, :k])   # 3、归类

    for i in range(k):   # 4、求新类中心
        index = dist[:, k] == i
        center_new[i, :] = data[index, :].mean(axis=0)

    if np.all(center == center_new):   # 5、判定结束
        break
    center = center_new
dist

例子:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans

iris = load_iris()

model = KMeans(n_clusters=3).fit(iris.data)
model.labels_

学习笔记 | KMeans聚类 (K均值聚类)

  • 自行完成对聚类结果的评估。