模糊聚类划分matlab代码,模糊C均值聚类算法(原理+Matlab代码)

描述

聚类分析是多元统计分析的一种,也是无监督模式识别的一个重要分支,在模式分类 图像处理和模糊规则处理等众多领域中获得最广泛的应用。它把一个没有类别标记的样本按照某种准则划分为若干子集,使相似的样本尽可能归于一类,而把不相似的样本划分到不同的类中。硬聚类把每个待识别的对象严格的划分某类中,具有非此即彼的性质,而模糊聚类建立了样本对类别的不确定描述,更能客观的反应客观世界,从而成为聚类分析的主流。

模糊聚类算法是一种基于函数最优方法的聚类算法,使用微积分计算技术求最优代价函数,在基于概率算法的聚类方法中将使用概率密度函数,为此要假定合适的模型,模糊聚类算法的向量可以同时属于多个聚类,从而摆脱上述问题。

模糊聚类分析算法大致可分为三类

1)分类数不定,根据不同要求对事物进行动态聚类,此类方法是基于模糊等价矩阵聚类的,称为模糊等价矩阵动态聚类分析法。

2)分类数给定,寻找出对事物的最佳分析方案,此类方法是基于目标函数聚类的,称为模糊C均值聚类。

3)在摄动有意义的情况下,根据模糊相似矩阵聚类,此类方法称为基于摄动的模糊聚类分析法

模糊的c均值聚类算法:-------- 一种模糊聚类算法,是k均值聚类算法的推广形式,隶属度取值为[0 1]区间内的任何一个数,提出的基本根据是“类内加权误差平方和最小化”准则;

模糊C 均值聚类算法(FCM,Fuzzy c-means) 是从硬C 均值聚类算法发展而来(HCM,Hardc-means )。

硬C划分和模糊C 划分

fde71c675a2fbdf7a201f210bbcaa34a.png

FCM算法原理

c0d85cf86907fc93600cbafac52ce621.png

FCM 算法步骤

给定聚类类别数C,设定迭代收敛条件,初始化各个聚类中心;

(1)重复下面的运算,直到各个样本的隶属度值稳定:

(2)用当前的聚类中心根据公式(6) 计算隶属度函数;

A.用当前的隶属度函数根据公式(5) 重新计算各个聚类的中心。

B.当算法收敛时,就得到了各类的聚类中心和各个样本对于各类的隶属度值,从而完成了模糊聚类划分。

算法实现

·采用VC++进行编写

文档的读取

#include “data.h”

//函数定义

double **DataRead(char*name,int row,intcol)

{

double**p=new double* [row];

ifstreaminfile;

infile.open(name,ios::in);

for(inti=0;i《row;i++)

{

p[i]=newdouble[col];

for(intj=0;j《col;j++)

{

infile》》p[i][j];

}

}

infile.close();

cout《《“成功读取数据文件:”《《name《《“!\n”;

returnp;

//释放内存

for(i=0;i《row;i++)

{

delete[]p[i];

}

delete[]p;

}

文档的保存

#include “data.h”

void DataSave(double**data,int row,intcol,char*name)

{

inti,j;

ofstreamoutfile;

//打开文件,输出数据

outfile.open(name,ios::out);

outfile.setf(ios::fixed);

outfile.precision(4);

for(i=0;i《row;i++)

{

for(j=0;j《col;j++)

{

outfile《《data[i][j]《《“”;

}

outfile《《endl;

}

outfile《《end

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值