[算法理解]k-means algorithm

本文介绍了k-means算法的基本原理和流程,并通过Python实现了算法,展示了数据分布的聚类效果。在分析“同心圆”数据分布时,揭示了k-means在特定情况下的局限性,即无法有效处理此类数据。
摘要由CSDN通过智能技术生成


前言

算法名: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\} Dk{ μ1,μ2,...,μk}
2 repeat \textbf{repeat} repeat
3 令 C i = ∅ ( 1 ≤ i ≤ k ) 令C_i=\varnothing(1\le i\le k) Ci=(1ik)
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值