博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聚类算法:K-means 算法(k均值算法)
阅读量:5061 次
发布时间:2019-06-12

本文共 1560 字,大约阅读时间需要 5 分钟。

 

k-means算法:

     第一步:选
$K$
个初始聚类中心,
$z_1(1),z_2(1),\cdots,z_k(1)$
,其中括号内的序号为寻找聚类中心的迭代运算的次序号.

聚类中心的向量值可任意设定,例如可选开始的$K$个模式样本的向量值作为初始聚类中心。

     第二步:逐个将需分类的模式样本$\{x\}$
按最小距离准则分配给$K$
个聚类中心中的某一个$z_j(1)$
假设$i=j$
时,

\[

D_j (k) = \min \{ \left\| {x - z_i (k)} \right\|,i = 1,2, \cdots K\}
\]

$x\in S_j(k)$,其中$k$为迭代运算的次序号,第一次迭代$k=1$,$S_j$表示第$j$个聚类,其聚类中心为$z_j$

第三步:计算各个聚类中心的新的向量值,$z_j(k+1),j=1,2,\cdots,K$,求各聚类域中所包含样本的均值向量:

\[

\begin{array}{*{20}c}
{z_j (k + 1) = \frac{1}{
{N_j }}\sum\limits_{x \in S_j (k)} x ,} & {j = 1,2, \cdots ,K} \\
\end{array},
\]

其中$N_j$为第$j$个聚类域$S_j$中所包含的样本个数。以均值向量作为新的聚类中心,可使如下聚类准则函数最小:

\[

\begin{array}{*{20}c}
{J_j = \sum\limits_{x \in S_j (k)} {\left\| {x - z_j (k + 1)} \right\|^2 } ,} & {j = 1,2, \cdots ,K} \\
\end{array}
\]

在这一步中要分别计算$K$个聚类中的样本均值向量,所以称之为$K$-均值算法。

第四步:若$z_j(k+1)\neq z_j(k),j=1,2,\cdots,K$,则返回第二步,将模式样本逐个重新分类,重复迭代运算; $z_j(k+1)=z_j(k),j=1,2,\cdots,k$,则算法收敛,计算结束。

 

K-均值分类算法实例

第一步:取$K=2$,并选

          $z_1(1)=x_1=(0 0)^T, z_2(1)=x_2=(1 0)^T$

第二步:因$||x_1-z_1(1)||<||x_1-z_2(1)||$,故$x_1\in S_1(1)$

           因$||x_2-z_1(1)||>||x_2-z_2(1)||$,故$x_2\in S_2(1)$

           因$||x_3-z_1(1)||<||x_3-z_2(1)||$,故$x_3\in S_1(1)$

                                  ……

          得到:    

                  S1(1)={x1, x3}, S2(1)={x2, x4, x5, …, x20}

第三步:计算新的聚类中心

                 

                 

第四步:因$z_j(2)\neq z_j(1),j=1,2$,返回第二步;

第二步(返回1):由新的聚类中心,得到:

                   

                    

            因此

                    $S_1(2)=\{x_1, x_2,\cdots, x_8\}$

                    $S_2(2)=\{x_9, x_{10}, \cdots, x_{20}\}$ 

第三步(返回1):计算聚类中心 

                    

                   

第四步(返回1):因$z_j(3)\neq z_j(2),j=1,2$,返回第二步;

第二步(返回2):分类结果与前一次迭代的结果相同,即$S_1(4)=S_1(3),S_2(4)= S_2(3)$; 

第三步(返回2):聚类中心与前一次迭代的结果相同; 

第四步(返回2):因$z_j(4)=z_j(3),j=1,2$,算法收敛,得到最终的聚类中心。 

                           ,

 

转载于:https://www.cnblogs.com/huadongw/p/4101800.html

你可能感兴趣的文章
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
idea设置自定义图片
查看>>
[高级]Android多线程任务优化1:探讨AsyncTask的缺陷
查看>>
选择器
查看>>
rownum 的使用
查看>>
Mysql与Oracle 的对比
查看>>
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
页面置换算法-LRU(Least Recently Used)c++实现
查看>>