机器学习个人笔记——(四)k-means

k-means概念

K-Means算法是无监督的聚类算法 ,也是一个比较简单的聚类算法,效果明显。

例如在二维平面上,存在以下点,点的类别未知
在这里插入图片描述
通过k-means算法,可以得到以下三个簇。使用不同颜色标注出,点集被分为3个类别。
在这里插入图片描述

算法思想

现有样本集X,包含m个样本,每个样本n个特征
X = [ x 11 x 12 . . . x 1 n x 21 x 22 . . . x 2 n . . . . . . . . . . . . x m 1 x m 2 . . . x m n ] \mathbf{X} =\begin{bmatrix} x_{11}&x_{12} & ...& x_{1n}\\ x_{21}&x_{22} & ...& x_{2n}\\ ...&...& ...& ...\\ x_{m1}&x_{m2} & ...& x_{mn}\\ \end{bmatrix} X=x11x21...xm1x12x22...xm2............x1nx2n...xmn
其中第i个样本为
x i = [ x i 1 x i 2 . . . x i n ] \mathbf{x_i} =\begin{bmatrix} x_{i1}&x_{i2} & ...& x_{in} \end{bmatrix} xi=[xi1xi2...xin]

假设我们要把数据分成K个类,可以分为以下几个步骤:

k为人为设定

1. 随机选取k个点,作为聚类中心;
R = [ r 11 r 12 . . . r 1 n r 21 r 22 . . . r 2 n . . . . . . . . . . . . r k 1 r k 2 . . . r k n ] , r i j 随 机 选 取 \mathbf{R} =\begin{bmatrix} r_{11}&r_{12} & ...& r_{1n}\\ r_{21}&r_{22} & ...& r_{2n}\\ ...&...& ...& ...\\ r_{k1}&r_{k2} & ...& r_{kn}\\ \end{bmatrix},r_{ij}随机选取 R=r11r21...rk1r12r22...rk2............r1nr2n...rkn,rij

其中第i个聚类中心为
r i = [ r i 1 r i 2 . . . r i n ] \mathbf{r_i} =\begin{bmatrix} r_{i1}&r_{i2} & ...& r_{in} \end{bmatrix} ri=[ri1ri2...rin]

2. 计算每个点分别到k个聚类中心的距离,然后将该点分到最近的聚类中心;
d i s t ( x i , R ) = d i s t ( [ x i 1 x i 2 . . . x i n ] , [ r 11 r 12 . . . r 1 n r 21 r 22 . . . r 2 n . . . . . . . . . . . . r k 1 r k 2 . . . r k n ] ) = [ d 1 d 2 . . . d k ] \begin{aligned} dist(\mathbf{x_{i}},\mathbf{R}) & = dist(\begin{bmatrix} x_{i1}&x_{i2} & ...& x_{in} \end{bmatrix},\begin{bmatrix} r_{11}&r_{12} & ...& r_{1n}\\ r_{21}&r_{22} & ...& r_{2n}\\ ...&...& ...& ...\\ r_{k1}&r_{k2} & ...& r_{kn}\\ \end{bmatrix})\\&=\begin{bmatrix} d_{1}\\ d_{2}\\ ...\\ d_{k}\\ \end{bmatrix} \end{aligned} dist(xi,R)=dist([xi1xi2...xin],r11r21...rk1r12r22...rk2............r1nr2n...rkn)=d1d2...dk
其中:
d 1 = ( x i 1 − r 11 ) 2 + ( x i 2 − r 12 ) 2 + . . . + ( x i n − r 1 n ) 2 d_{1}=\sqrt{(x_{i1}-r_{11})^{2}+(x_{i2}-r_{12})^{2}+...+(x_{in}-r_{1n})^{2}} d1=(xi1r11)2+(xi2r12)2+...+(xinr1n)2
d 2 = ( x i 1 − r 21 ) 2 + ( x i 2 − r 22 ) 2 + . . . + ( x i n − r 2 n ) 2 . . . . d_{2}=\sqrt{(x_{i1}-r_{21})^{2}+(x_{i2}-r_{22})^{2}+...+(x_{in}-r_{2n})^{2}}\\.... d2=(xi1r21)2+(xi2r22)2+...+(xinr2n)2 ....

每个样本与k个中心计算,得到k个距离

取距离最近的中心,其所对应的类别。 l = g e t G r o u p ( min ⁡ ( d 1 , d 2 , . . . , d k ) ) l=getGroup(\min (d_{1},d{2},...,d_{k})) l=getGroup(min(d1,d2,...,dk))
将该样本类别设置为 l l l

3. 重复步骤2直到所有点完成分类

4. 重新计算每个簇的质心(均值);

当所有样本分类完成,分为了k个类别(簇)后
l 1 : m 1 个 样 本 l 2 : m 2 个 样 本 . . . l k : m k 个 样 本 \begin{aligned} &l_1:m_{1}个样本\\ &l_2:m_{2}个样本\\ &...\\ &l_k:m_{k}个样本 \end{aligned} l1:m1l2:m2...lk:mk

分别求各个簇中样本的均值,将簇的质心变为该均值

5. 重复以上2~4步,直到质心的位置不再发生变化或者达到设定的迭代次数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值