代码

import numpy as npnp.set_printoptions(precision=2) # 设置矩阵输出精度,保留两位小数def jmax(a):"""数据标准化最大值规格化法"""a=np.array(a)c=np.zeros_like(a,dtype=float)for j in range(c.shape[1]): # 遍历c的列for i in range(c.shape[0]): # 遍历c的列c[i,j]=a[i,j]/np.max(a[:,j])return cdef alike(a):"""模糊相似矩阵最大最小法"""a=jmax(a) # 用标准化后的数据c=np.zeros((a.shape[0],a.shape[0]),dtype=float)mmax=[]mmin=[]for i in range(c.shape[0]): # 遍历c的行for j in range(c.shape[0]): # 遍历c的行mmax.extend([np.fmax(a[i,:],a[j,:])]) # 取i和和j行的最大值,即求i行和j行的并mmin.extend([np.fmin(a[i,:],a[j,:])]) # 取i和和j行的最大值,即求i行和j行的交for i in range(len(mmax)):mmax[i]=np.sum(mmax[i]) # 求并的和mmin[i]=np.sum(mmin[i]) # 求交的和mmax=np.array(mmax).reshape(c.shape[0],c.shape[1]) # 变换为与c同型的矩阵mmin=np.array(mmin).reshape(c.shape[0],c.shape[1]) # 变换为与c同型的矩阵for i in range(c.shape[0]): # 遍历c的行for j in range(c.shape[1]): # 遍历c的列c[i,j]=mmin[i,j]/mmax[i,j] # 赋值相似度return cdef hecheng(a,b):"""求模糊是矩阵a和模糊矩阵b的合成"""a,b = np.array(a),np.array(b)c=np.zeros_like(a.dot(b))for i in range(a.shape[0]): # 遍历a的行元素for j in range(b.shape[1]): # 遍历b的列元素empty=[]for k in range(a.shape[1]):empty.append(min(a[i,k],b[k,j])) # 行列元素比小c[i,j]=max(empty) # 比小结果取大return cdef bibao(a):"""求模糊矩阵a的闭包"""a = alike(a) # 用模糊相似矩阵c=awhile True:m=cc=hecheng(hecheng(a,c),hecheng(a,c))if (c==m).all(): # 闭包条件return np.around(c,decimals=2) # 返回传递闭包,四舍五入,保留两位小数breakelse:continuedef julei(a,g):a=bibao(a) # 用传递闭包c=np.zeros_like(a,dtype=int)for i in range(c.shape[0]):for j in range(c.shape[1]):if a[i,j]>=g:c[i,j]=1else:c[i,j]=0return cdef result(a,g):"""模糊聚类分析结果展示"""a = julei(a,g)c=[] # 同类聚合for i in range(len(a)):x=[]for j in range(i,len(a)):if a[i][j]==1:x.append(j)else:continuec.append(x)d=[] # 删除重复1for i in range(len(c)):for j in range(i+1,len(c)):for k in range(len(c[j])):if c[j][k] in c[i]:d.append(c[j])breakelse:continuedd=[] # 删除重复2for i in range(len(d)):for j in range(i+1,len(d)):if d[i]==d[j]:dd.append(d[j])for i in range(len(dd)): # 删除重复3try:d.pop(d.index(dd[i]))except ValueError:continuefor i in range(len(d)): # 删除重复4try:c.pop(c.index(d[i]))except ValueError:continuefor i in range(len(dd)): # 删除重复5try:c.pop(c.index(dd[i]))except ValueError:continuefor i in range(len(c)):for j in range(len(c[i])):c[i][j]+=1return cdef main():"""测试代码"""x=[[80,10,6,2],[50,1,6,4],[90,6,4,6],[40,5,7,3],[10,1,2,4]]g=0.63print("原始数据\n",np.array(x))print("\n数据标准化(最大值规格化法)\n",jmax(x))print("\n模糊相似矩阵(最大最小法)\n",alike(x))print("\n传递闭包\n",bibao(x))print("\n模糊聚类分析矩阵(lambda=%0.2f)\n"%g,julei(x,g))print("\n模糊聚类结果(lambda=%0.2f)\n"%g,result(x,g))if __name__ == "__main__":main()

模糊数学Python(二)模糊聚类分析相关推荐

  1. 【模糊数学】编程实现文献“研究生招生中的模糊聚类分析方法”

    模糊数学是一门很有用的应用型数学,之前做手势识别时,曾看到过NUS使用模糊数学做的手势检测.本文是"模糊数学"课程作业的总结,使用matlab编程实现,在此记录下来以备之后的学习. ...

  2. 数据分析模型(二):模糊聚类分析方法及实例(附完整代码)

    聚类分析是数据挖掘技术中的一种重要的方法,可以作为一个独立的工具来获得数据分布情况,它广泛地应用于模式识别.数据分析.图像处理.生物学.经济学等许多领域. 聚类分析方法是数理统计中研究"物以 ...

  3. python/matlab进行模糊聚类分析

    问题 根据下面表格中的数据,用Matlab(或Python)编程进行数据标准化处理: 根据标准化处理后的数据,用Matlab(或Python)编程,建立模糊相似矩阵,并编程求出其传递闭包矩阵: 根据模 ...

  4. 模糊聚类分析和模式识别

    聚类分析 --一种多元统计.无监督分类. --按照一定的要求和规律对事物进行区分和分类的过程,在这一过程中没有任何关于分类的先验知识,仅靠事物间的相似性作为类属划分的准则. 分类: 1.传统的聚类分析 ...

  5. 2021-04-14 Matlab实现模糊聚类分析 FCM

    Matlab实现模糊聚类分析 FCM 模糊均值聚类(FCM)是用隶属度确定每个数据点属于某个聚类的程度的一种聚类算法.1973年,Bezdek提出了该算法,作为早期硬均值聚类(HCM)方法的一种改进. ...

  6. matlab聚类分析实例的博客,基于Matlab的模糊聚类分析及其应用 含实例应用.pptx

    基于Matlab的模糊聚类分析及其应用 含实例应用 1;;3;1.预备知识;定义一:(模糊)聚类分析 在科学技术,经济管理中常常需要按一定的标准(相似程度或亲疏关系)进行分类.对所研究的事物按一定标准 ...

  7. MATLAB实现智能计算方法实验:实验一 模糊聚类分析

    资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 实验汇总 MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智 ...

  8. 数学建模选修课笔记——模糊聚类分析

    3.28 模糊聚类分析 模糊关系 1.举例 2.定义 3.运算 ①相等:R1=R2 <=> R1(x,y) = R2(x,y) ②包含:R1包含于R2 <=> R1(x,y) ...

  9. 【机器学习笔记37】模糊聚类分析(基于最大生成树)

    [参考资料] [1]<模式识别与智能计算的MATLAB技术实现> [2]<模糊数学方法及其应用> [3]https://baike.baidu.com/item/Kruskal ...

最新文章

  1. php 获取下拉框选中的文本,jQuery实现select下拉框获取当前选中的文本
  2. 对于fmri的设计矩阵构造的一个很直观的解释-by 西南大学xulei教授
  3. Sharepoint
  4. 【Python】if else 一行写完
  5. MVC运转-平台分发
  6. error: not found: value SparkSession
  7. 665. 非递减数列
  8. kindeditor java上传_富文本编辑器kindeditor上传图片的配置方法
  9. zend studio 8使用感受
  10. nginx trac mysql svn_linux下nginx+svn
  11. ezcad旋转轴标刻参数_激光打标机软件ezcad中地球仪标刻使用方法教程详解
  12. PCB绘图的基本要求和布线原则
  13. 如何将图片压缩到200K以内,有什么好方法吗?
  14. windows网络和共享中心“查看基本网络信息并设置连接”为“未知”的解决方案
  15. 谷歌图片验证码的使用图文详解附源码
  16. 什么样的产品可以做为引流款?请选择这些产品作为引流爆款
  17. 哈工大读研和找工作心得
  18. 开始实际搭建App测试环境-Appium
  19. 浅谈Zebra斑马打印机三种打印方式的利弊
  20. linux定时任务nodejs,让Nodejs来管理定时任务later

热门文章

  1. java代码条形码链接网址_Java在PDF中添加条形码
  2. 微信发出去的照片服务器会保存吗,转发或保存别人微信朋友圈的照片,别人是否会知道...
  3. JavaScript-你不知道的JavaScript (免费分享)
  4. 在VMware上安装kali(7z格式)并配置中文环境
  5. 被讨厌的勇气:“自我启发之父”阿德勒的哲学课
  6. Java求出水仙花数
  7. AngularJS介绍 - 下一个大框架
  8. 主动扫描系列文章(2):masscan/zmap扫描主机与端口
  9. C语言程序设计(第三版)何钦铭著 习题4-6
  10. ANN人工神经网络(Artificial Neuron Network )