文章目录
前言
算法名:k-means algorithm
本文作者:XMU_MIAO
日期:2020/11/12
一、k-means算法介绍
k-means算法是一种无监督聚类算法,其应用广泛。首先根据要划分的类数 k k k随机选择 k k k个样本作为均值向量(每个均值向量代表了一个类别),而后计算每一个样本点与这些均值向量的距离,并根据最近的均值向量将样本点进行归类,再将均值向量更新并循环上述步骤,直到均值向量不再更新,则算法停止。 具体的算法流程详见第二部分,在第三部分将用python实现该算法,数据集来自西瓜书P202,并将结果绘图展示。
二、算法流程(引自西瓜书)
步 骤 步骤 步骤 | 算 法 过 程 算法过程 算法过程 |
---|---|
0 | 输入: 算 法 输 入 为 样 本 集 D = { x 1 , x 2 , . . . , x m } , 聚 类 簇 数 k \textbf{输入:}\,算法输入为样本集D=\{x_1,x_2,...,x_m \},聚类簇数k\, 输入:算法输入为样本集D={ x1,x2,...,xm},聚类簇数k |
1 | 从 D 中 随 机 选 择 k 个 样 本 作 为 初 始 均 值 向 量 { μ 1 , μ 2 , . . . , μ k } 从D中随机选择k个样本作为初始均值向量\{\mu_1,\mu_2,...,\mu_k\} 从D中随机选择k个样本作为初始均值向量{ μ1,μ2,...,μk} |
2 | repeat \textbf{repeat} repeat |
3 | 令 C i = ∅ ( 1 ≤ i ≤ k ) 令C_i=\varnothing(1\le i\le k) 令Ci=∅(1≤i≤k) |
4 | for j = 1 , 2 , . . . , m do \textbf{for}\,\,j=1,2,...,m\,\,\,\textbf{do} forj=1,2,...,mdo |
5 | 计 算 样 本 x j 与 各 均 值 向 量 μ i ( 1 ≤ i ≤ k ) 的 距 离 d j i = ∥ x j − μ i ∥ 2 计算样本x_j与各均值向量\mu_i(1\le i\le k)的距离d_{ji}=\|x_j-\mu_i\|_2 计算样本xj |