23. 模糊聚类分析原理及实现

聚类分析,就是用数学方法研究和处理所给定对象,按照事物间的相似性进行区分和分类的过程。

传统的聚类分析是一种硬划分,它把每个待识别的对象严格地划分到某个类中,具有非此即彼的性质,这种分类的类别界限是分明的。

随着模糊理论的建立,人们开始用模糊的方法来处理聚类问题,称为模糊聚类分析。由于模糊聚类得到了样本数与各个类别的不确定性程度,表达了样本类属的中介性,即建立起了样本对于类别的不确定性的描述,能更客观地反映现实世界。

本篇先介绍传统的两种(适合数据量较小情形,及理解模糊聚类原理):基于择近原则、模糊等价关系的模糊聚类方法。

(一)预备知识

一、模糊等价矩阵

定义1 设R=(rij)nn为模糊矩阵,I为n阶单位矩阵,若R满足

i) 自反性:I≤R (等价于rii =1);

ii) 对称性:RT=R;

则称R为模糊相似矩阵,若再满足

iii) 传递性:R2≤R(等价于)

则称R为模糊等价矩阵。

定理1 设R为n阶模糊相似矩阵,则存在一个最小的自然数k(k=lamda(m)))=1;

y=X;

例3某地区设有11个雨量站,其分布如图所示:

10年来各雨量站测得的年降雨量表如下:

现因经费问题,希望撤销几个雨量站,问撤销哪些雨量站而不会太多地减少降雨信息?

分析:对11个雨量站进行模糊聚类,同一类的只需保留一个即可。比如,已知该市决定撤销6个只保留5个雨量站,则模糊聚类为5类。

代码:

load data;

%数据归一化

[X,ps]=mapminmax(data,0,1);

X=X;

%选择计算相似程度的方法

type=3; % c=0.1, a=1, 此时也称绝对值减数法

%求模糊相似矩阵R0

R0=fuz_distance(X,type)

%将模糊相似矩阵R0改造成模糊等价矩阵R

[R,k]=tran_R(R0)

%求将样本分成8类的λ-截矩阵

R_lamda=fuz_lamda(R,8)

运行结果及说明:

归一化后的数据矩阵X:

模糊相似矩阵R0:

由R0改造成的模糊等价矩阵R:

k = 8 说明R16=R8.

将样本分为5类的λ-截矩阵R_lamda:

可以判断5类分别是:

{x1, x7} {x2, x4, x5, x6} {x3, x9} {x8, x11} {x10}

注:对于这类C均值模糊聚类问题,也可以直接调用Matlab自带的模糊聚类函数fcm.m求解。调用方式:

[center,U, obj_fcn,]=fcm(data,cluster_n)

其中,data为归一化后的样本数据,每一行是一个样本;cluster_n为聚类数;center返回最终的聚类中心矩阵;U为最终的模糊分区矩阵;obj_fcn为迭代过程中的目标函数值(越小越好)。

代码:(X为前面已归一化的样本数据)

[center,U, obj_fcn]=fcm(X,5)

maxU=max(U);

index1 = find(U(1,:)==maxU); %第一类

index2 = find(U(2,:)==maxU); %第二类

index3 = find(U(3,:)==maxU); %第三类

index4 = find(U(4,:)==maxU); %第四类

index5 = find(U(5,:)==maxU); %第五类

class1=X(index1,:) %第一类中的样本数据

class2=X(index2,:) %第二类中的样本数据

class3=X(index3,:) %第三类中的样本数据

class4=X(index4,:) %第四类中的样本数据

class5=X(index5,:) %第五类中的样本数据

运行结果略,对比class1-class5与X, 得到分类结果与前文相同。另外,分为5类的obj_fcn=1.0578, 如何选取合适的分类数,使得obj_fcn达到最小(最优模糊聚类)放到下一篇。

海明贴近度matlab,Matlab学习系列23.-模糊聚类分析原理及实现.docx相关推荐

  1. Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

    caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...

  2. javascript学习系列(23):数组中的解构方法

    最好的种树是十年前,其次是现在.歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主  放弃很容易但是坚持一定很酷     我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的 ...

  3. 【Java集合学习系列】HashMap实现原理及源码分析

    HashMap特性 hashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap接口,实现了Map接口(HashTable跟HashMap很像,HashTable中的方法是线程安全 ...

  4. 深度强化学习系列(14): A3C算法原理及Tensorflow实现

    在DQN.DDPG算法中均用到了一个非常重要的思想经验回放,而使用经验回放的一个重要原因就是打乱数据之间的相关性,使得强化学习的序列满足独立同分布. 本文首先从Google于ICML2016顶会上发的 ...

  5. 深度强化学习系列(15): TRPO算法原理及Tensorflow实现

    深入浅出理解TRPO算法 1.论文思想与原理 1.1 Surrogate function(替代函数) 1.2 目标函数 1.3 一阶近似: L函数 1.3.1 技巧一:一阶近似 1.3.2 重要性采 ...

  6. 学习系列——kafak入门及其原理

    Kafka简介 Kafka是linkedin使用Scala编写具有高水平扩展和高吞吐量的分布式消息系统.Kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Co ...

  7. 【RMF】ros机器人中间件框架学习系列一:了解原理

    [前言]RMF(ros机器人中间件框架)目前国内资源比较少,学起来有些困难,但出于某些原因还是需要研究一下,这里记录一下自己的学习过程,欢迎指正,共同进步 参考网站: ①:使用ROS2机器人操做系统进 ...

  8. Caffe 学习系列

    学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...

  9. 模糊数学——距离和贴近度

    先给出距离和贴近度公式:绝对距离:∑ (|A(u) - B(u)| ^ p ) ^ (1 / p)相对距离:∑ ((1 / n) * |A(u) - B(u)| ^ p ) ^ (1 / p)加权距离 ...

  10. 基于Matlab的小学毕业班成绩总评模糊聚类分析

    目录 一.实验目的------------------2 二.实验环境------------------2 三.实验内容------------------2 1.实际问题------------- ...

最新文章

  1. 中国污水处理行投资建议与运营价值分析报告2022-2027年
  2. [Android] 触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印
  3. CF1260C-Infinite Fence【结论题】
  4. Winform中ComcoBox控件设置选定项
  5. 在编写mini2440 helloworld驱动遇到的问题
  6. matlab 关于double和im2double
  7. for循环、while循环、break跳出循环、continue结束本次循环、exit退出脚本
  8. 【转】Java多线程编程(十)-并发编程原理(分布式环境中并发问题)
  9. php curl 模拟微信公众号登入
  10. 高级JAVA工程师的岗位职责,岗位要求
  11. 使用 Kubernetes Ingress 对外暴露服务
  12. TED : Tips to boost your confidence
  13. 局域网下微信无法连接到服务器,微信无法连接到服务器怎么办
  14. 12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁
  15. 国家标准(简称国标)下载备忘
  16. SEO黑帽技术只多少
  17. 利用JS事件让你更加愉快地划水
  18. SANGFOR深信服AC主主、主备模式
  19. 【数据库系统】—— 经典范例University数据库各表速查(大学系统)
  20. java短整型_JAVA个基本数据类型

热门文章

  1. 虚拟机桥接模式配置网络
  2. dagger2简单使用与理解笔记
  3. 将数字金额转换为对应的中文大写金额
  4. python3+pip安装教程--centos6
  5. 华为数据治理及数据分类管理实践
  6. 投影仪融合+拼接处理系统制作原理
  7. 如何用TC群控系统同时控制上百台手机
  8. JavaScript BOM编程
  9. C语言自学之路十一(详解C语言操作符一)
  10. java font.getfont_FontManager.getFont(方正黑体);这个方法返回值为null