C均值算法优质文档.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

题目:C均值与模糊C均值

课程名称:

授课老师:

学院:

专业:

学生姓名:

学号:

C均值聚类与模糊C均值聚类

一、算法介绍

1.背景:

聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干类的问题。一个类是给定样本的子集。直观上,相似的样本聚集在相同的类,不相似的样本分散在不同的类。因此,样本之间的相似度或距离起着重要的作用。聚类属于无监督学习,因为只是根据样本的相似度将其进行归类,而类事先不知道。

2.C均值聚类:

C均值聚类将样本划分为c个子集,构成c个类,将n个样本分到c个类中,每个样本到其所属类的中心的距离最小。每个样本只能属于一个类,所以C均值聚类是硬聚类。

基本思想:通过迭代寻找c个聚类的一种划分方案,使得用这c个聚类的均值来代表相应各类样本时所得到的总体误差最小。

·算法原理:

输入:n个样本{x1

输出:使得每个数据与其对应聚类中心点的误差平方和最小的聚类结果

1)初始化聚类中心:随机选择k个样本点,并将其视为各聚类的中心:

m

2)对样本进行聚类:使用欧式距离计算每个样本到聚类中心mt

的距离,按照最小距离法则逐个将样本x划分到以聚类中心为代表的k个类Ct

3)计算新的聚类中心:计算当前各个类中的均值,作为新的聚类中心

m

4)重复2、3两步,直到聚类中心不再改变,输出当前的聚类结果:Ct,计算此时的误差平方和:J=

5)步骤1~5循环十次,找到最小的误差平方和J所对应的聚类结果,作为最后输出结果。

3.模糊C均值聚类:

在C均值算法中,把硬划分变为模糊划分。

设样本的uj(xi)是第i个x

J=i=1

其中,b是一个可以控制聚类结果的模糊程度的常数,通常取b=2。约束条件为一个样本属于各个聚类的隶属度之和为1,即:

j=1cuj(x

·利用拉格朗日乘数法来求解在条件(2)约束下,式(1)的极小值。

令优化的目标函数为:

L=

分别求L对mi、λi和

mj

ujxi

·算法步骤:

1)设定聚类数目C、参数b和一个适当的小数?0,取b=2

2)初始化各个聚类中心

m

3)根据式(5)更新隶属度函数

4)根据式(4)更新聚类中心:

m

5)如果mt-

二、数据集描述:

1、Sonar数据集:

这是一个通过声纳声音从不同曲面反弹后返回的信息判断物质是金属还是岩石的数据集。

这个数据集共有208条记录,每条数据记录了60种不同的声纳探测的数据和一个分类结果,若是岩石则标记为R,若是金属则标记为M。

Sonar数据集分类表

M类

R类

总计

条数

111

97

208

维数

60

60

2、iris数据集:

iris数据集包含3类共150条记录,每类50个数据,每条记录都有4项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花属于(iris-setosa,iris-versicolour,iris-virginica)中的哪一品种。

Iris数据集分类表

iris-setosa

iris-versicolour

iris-virginica

条数

50

50

50

维数

4

4

4

三、C均值聚类的实现:

1、算法流程:

C均值:

输入:未分类数据集,聚类个数k;

输出:聚类结果

1.导入数据集,去掉最后一列分类的数据;

2.初始化聚类中心(这里使用的是:将数据集打乱,随机选择相邻的C条数据作为初始的聚类中心);

3.设置循环标志;

4.保存该次的聚类中心;

5.对所有数据计算其到各个聚类中心的欧式距离,并将与距离最小的聚类中心作为一类,同时计算这个最小距离的平方(方便算J);

6.计算当前各个类中所有数据的平均值作为新的聚类中心;

7.比较相邻两次的聚类中心是否一致,一致则返回聚类结果,以及J;不一致则回到步骤4;

8.十次循环找出最小的J做为最后的聚类结果;

9.计算聚类的准确率,画出不同J对应的准确率的图;

2、在sonar数据集上验证C均值聚类算法

Sonar数据集分为两类,k=2,开始时舍掉最后一列,利用算法聚类,在计算准确率时利用每一类数据有多少成功的聚在一起与该类数据本来有多少做比较,得出最后的准确率。

利用python的代码实现:

结果展示:

进行十次实验得出的不同J对应的准确率的曲线:

最好情况下:

Sonar数据集利用C均值聚类的准确率为:58.65%

3.在iris数据集上验证C均值聚类算法:

iris数据集分为三类,k=3,开始时舍掉最后一列,利用算法聚类,在计算准确率时利用每一类数据有多少成功的聚在一起与该类数据本来有多少做比较,得出最后的

文档评论(0)

A~下一站守候 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档