精华内容
下载资源
问答
  • 模糊聚类分析时判断模糊矩阵传递性并计算传递闭包MATLAB实现,,可以算出模糊传递矩阵,当矩阵满足自反性对称性时为等价矩阵
  • 用Python实现模糊聚类(传递闭包法)

    千次阅读 热门讨论 2020-11-06 20:33:02
    模糊聚类(传递闭包法)****一、传递闭包法的操作步骤****二、关键技术分析与准备工作**1、涉及的主要编程技术和模糊数学的计算方法2、准备工作**三、实现步骤**1、导入相关库2、生成相似矩阵3、计算传递闭包4、筛选...

    FuzzyPy-模糊聚类(传递闭包法)

    一、传递闭包法的操作步骤
    • 第一步: 计算相似矩阵 R R R 的传递闭包。即依次计算 R 2 R^2 R2 R 4 R^4 R4、…,当第一次出现 R 2 i = R 2 i + 1 R^{2^i}=R^{2^{i+1}} R2i=R2i+1 R 2 i R^{2^i} R2i 就相似矩阵对应的传递闭包;

    • 第二步: 将传递闭包中的元素从大到小排列: λ 1 > λ 2 > ⋯ > λ m > \lambda_1>\lambda_2>\cdots>\lambda_m> λ1>λ2>>λm>

    • 第三步: 求出所有 λ k \lambda_k λk 对应的截矩阵 R λ 1 , R λ 2 , ⋯   , R λ m R_{\lambda_1},R_{\lambda_2},\cdots,R_{\lambda_m} Rλ1,Rλ2,,Rλm,根据截矩阵进行分类,并记录分类结果;

    • 第四步: 写出动态聚类结果(输出动态聚类报告);

    • 第五步: 画出动态聚类图。

    二、关键技术分析与准备工作
    1、涉及的主要编程技术和模糊数学的计算方法
    • (1)传递闭包的计算:模糊矩阵的合成;矩阵相等的判断

    • (2)找出截集水平 λ k \lambda_k λk:筛选传递闭包中的重复元素并排序

    • (3)动态分类:计算截矩阵;找出元素为1的元素对应下标,并放入同一集合;

    • (4)输出聚类结果:字符串操作

    • (5)动态聚类图*:相关绘图工具的使用(暂不开发)

    2、准备工作

    要实现以上技术内容需要安装以下包库:

    • Python

    • Numpy

    • scikit-fuzzymath(skfuzzy)

    三、实现步骤
    1、导入相关库

    方便起见直接将skfuzzy中所有函数导入。

    import numpy as np
    from skfuzzy import *
    
    2、生成相似矩阵

    为方便起见

    • 直接写成 n*n的随机矩阵,取n=5

    • 相似矩阵的元素都只取2位小数

    n = 5
    R = np.random.rand(n,n)
    R = R.dot(R.T)
    R = R / np.max(R)
    row, col = np.diag_indices_from(R)
    R[row,col] = np.ones([n])
    R = (R*100).astype(np.int)/100
    print(R)
    
    [[1.   0.53 0.5  0.36 0.57]
     [0.53 1.   0.42 0.45 0.65]
     [0.5  0.42 1.   0.44 0.48]
     [0.36 0.45 0.44 1.   0.71]
     [0.57 0.65 0.48 0.71 1.  ]]
    
    3、计算传递闭包

    注意: 由于传递闭包至多只需要做 [ln(n)]+1次,因此最简单的实现方法就是直接从0[ln(n)]+1

    t_R = R
    for i in range(np.log2(n).astype(np.int)+1):     
        t_R2 = maxmin_composition(t_R,t_R)
        if np.sum(np.abs(t_R-t_R2))!=0:
            t_R = t_R2
        else:        
            break
    print('传递闭包为R的 2^{0} 次方:\r\n'.format(i))
    print(t_R)
    
    传递闭包为R的 2^2 次方:
    
    [[1.   0.57 0.5  0.57 0.57]
     [0.57 1.   0.5  0.65 0.65]
     [0.5  0.5  1.   0.5  0.5 ]
     [0.57 0.65 0.5  1.   0.71]
     [0.57 0.65 0.5  0.71 1.  ]]
    
    4、筛选传递闭包的所有元素并排序

    这个非常简单

    • 去重:直接用numpyunique方法即可

    • 变成数组:直接用reshape(-1)就变成了一维数组

    • 排序:直接用sort。由于默认是升序,因此排完后再用[::-1]倒序即可

    lambdas = np.sort(np.unique(t_R).reshape(-1))[::-1]
    print(lambdas)
    
    [1.   0.71 0.65 0.57 0.5 ]
    

    这里可以小秀一下:

    lam_str = ''
    for (i,lam) in zip(range(len(lambdas)),lambdas):
                       if i !=len(lambdas)-1:
                           lam_str += str(lam)+' > '
                       else:
                           lam_str += str(lam)
    print('截集水平:'+lam_str)
    
    截集水平:1.0 > 0.71 > 0.65 > 0.57 > 0.5
    
    5、算出所有截矩阵、分类、记录分类结果

    这里需要注意一个问题,我们计算截矩阵的根本目的是找出在该截集水平时有关系的元素的对应下标。在Python里面这个操作其实可以直接实现,可以不用算出截矩阵。

    截矩阵的实现方法非常简单:(t_R >= lambda)*1

    temp_pairs = np.argwhere(t_R>=lambdas[1])
    
    print(temp_pairs)
    
    [[0 0]
     [1 1]
     [2 2]
     [3 3]
     [3 4]
     [4 3]
     [4 4]]
    

    但接下来的问题有点麻烦,我们需要将互相有关系的元素下标放在一起。

    为了方便实现,我们用了一种最 的办法,这里大致说一下思路。

    • 从截矩阵返回的内容是所有有关系的元素的下标的list,先遍历所有下标,任意一组下标集中出现它时我们就把另一个下标放进来。这样对每个元素而言,只要和它有关系的元素就会全部放进这一个列表;

    • 由于传递闭包是对称矩阵,因此每组 非对角线 上元素的下标都会成对出现,因此只需将元素遍历一次即可;

    • 由于 对角线元素 的下标并没有被我们删除,因此所有元素都会和它有关系的元素放在同一列表;

    • 每个元素遍历完成后,清除它对应的列表的重复值;最后再对总的列表清理一次重复值,这样就得到了一个只包含最终分类结果的列表。

    为了方便起见,我们将这个方法封装起来:

    def get_classes(temp_pairs):
        lists = []
    
        for item1 in temp_pairs:
            temp_list = []
            for item2 in temp_pairs:
                if item1[0]==item2[1]:
                    temp_list.append(item2[0])        
            lists.append(list(set(temp_list)))
    
        return(list(np.unique(lists)))
    
    print(get_classes(temp_pairs)) 
    
    [[0], [1], [2], [3, 4]]
    

    接下来遍历所有的 λ \lambda λ得出所有聚类结果:

    classes = []
    
    for lam in lambdas:
        if lam == lambdas[0]:
            classes.append([[x] for x in range(n)])
        else:
            pairs = np.argwhere(t_R >= lam)
            classes.append(get_classes(pairs))
    
    for c in classes:
        print(c)
    
    [[0], [1], [2], [3], [4]]
    [[0], [1], [2], [3, 4]]
    [[0], [1, 3, 4], [2]]
    [[0, 1, 3, 4], [2]]
    [0, 1, 2, 3, 4]
    
    6、输出聚类报告

    这一步就简单了,只需要进行简单的字符串操作即可:

    report_str = []
    
    for c in classes:
        temp_str = 'classes:$\{'
        for x in c:
            sub_class = ''
            if type(x) == list:
                sub_class = '\{'
                for i in x:
                    sub_class += 'x_{' + str(i) + '},'
                sub_class = sub_class[:-1] + '\},'
            else:
                sub_class += 'x_{' + str(x) + '},'
            temp_str += sub_class
        temp_str = temp_str[:-1]
        temp_str += '\}$'
        report_str.append(temp_str)
    
    for r in report_str:
        print(r,'\n')
            
        
    
    classes:$\{\{x_{0}\},\{x_{1}\},\{x_{2}\},\{x_{3}\},\{x_{4}\}\}$ 
    
    classes:$\{\{x_{0}\},\{x_{1}\},\{x_{2}\},\{x_{3},x_{4}\}\}$ 
    
    classes:$\{\{x_{0}\},\{x_{1},x_{3},x_{4}\},\{x_{2}\}\}$ 
    
    classes:$\{\{x_{0},x_{1},x_{3},x_{4}\},\{x_{2}\}\}$ 
    
    classes:$\{x_{0},x_{1},x_{2},x_{3},x_{4}\}$ 
    

    放到 markdown 里看看效果:

    classes: { { x 0 } , { x 1 } , { x 2 } , { x 3 } , { x 4 } } \{\{x_{0}\},\{x_{1}\},\{x_{2}\},\{x_{3}\},\{x_{4}\}\} {{x0},{x1},{x2},{x3},{x4}}

    classes: { { x 0 } , { x 1 } , { x 2 } , { x 3 , x 4 } } \{\{x_{0}\},\{x_{1}\},\{x_{2}\},\{x_{3},x_{4}\}\} {{x0},{x1},{x2},{x3,x4}}

    classes: { { x 0 } , { x 1 , x 3 , x 4 } , { x 2 } } \{\{x_{0}\},\{x_{1},x_{3},x_{4}\},\{x_{2}\}\} {{x0},{x1,x3,x4},{x2}}

    classes: { { x 0 , x 1 , x 3 , x 4 } , { x 2 } } \{\{x_{0},x_{1},x_{3},x_{4}\},\{x_{2}\}\} {{x0,x1,x3,x4},{x2}}

    classes: { x 0 , x 1 , x 2 , x 3 , x 4 } \{x_{0},x_{1},x_{2},x_{3},x_{4}\} {x0,x1,x2,x3,x4}

    四、技术总结

    本文利用Python实现了基于传递闭包法的模糊聚类分析。整个过程可以看出其实实现方法都非常简单。但目前仍然还是有一些不足之处:

    1、相似矩阵我们是直接随机生成的,因此要直接应用的话还得自己写出相似矩阵的构造方法。当然这个方法很简单,我们不多讲;

    2、在给定的截矩阵的前提下求出对应的分类方法get_classes还有很大的改进空间。目前的复杂度是 n × n n\times n n×n,方法特别笨。另外该方法在处理单位矩阵时其实返回的是一个元素为数字的列表,这导致分类结果没有正确将每个元素各为一类的情况展示出来,这部分必须要改进!

    3、动态聚类图还没画!当然这个问题还比较麻烦,暂时不弄了。

    完成时间:

    import datetime
    print(datetime.datetime.now())
    
    2020-11-06 01:46:27.822593
    
    展开全文
  • 传递闭包matlab程序

    热门讨论 2013-01-06 10:13:31
    matlab的在做模糊聚类分析时的传递闭包算法,可以算出模糊等价矩阵
  • 模糊相似矩阵到模糊等价矩阵,通常采用的是传递闭包

    模糊矩阵的乘法运算不同于普通的矩阵相乘,实质为取大取小运算。详细内容请查阅模糊数学相关书籍。

    附上矩阵乘法代码:

    Mat VagueMul(Mat& Q, Mat&R)
    {
    	//Mat Q = (Mat_<float>(4,3)<< 0.3, 0.7, 0.2,   1, 0, 0.4,  0, 0.5, 1,    0.6, 0.7, 0.8 );
    	//Mat R = (Mat_<float>(3,2)<< 0.1, 0.9, 0.9, 0.1, 0.6, 0.4);
    	Mat VagueMat(Q.rows, R.cols, CV_32FC1);
    	vector<float> tmpFloatVector;
    	for (int i = 0; i < Q.rows; i++)
    	{
    		float* QData = Q.ptr<float>(i);
    		float* VagueData = VagueMat.ptr<float>(i);
    		for (int j = 0; j < R.cols; j++)
    		{	
    			for (int k = 0; k < Q.cols; k++ )
    			{
    				tmpFloatVector.push_back(min(QData[k], R.ptr<float>(k)[j]));
    			}
    			VagueData[j] = *max_element(tmpFloatVector.begin(), tmpFloatVector.end()); 
    			tmpFloatVector.clear();
    		}
    	}
    	return VagueMat;
    }

    上述代码并不简洁,实际中的模糊相似矩阵往往为方阵,每次只需要计算上三角(或下三角),仅供参考。

    转载请注明出处。

    展开全文
  • 模糊数学学习笔记 5:模糊聚类

    千次阅读 2020-03-07 23:52:47
    建立模糊相似矩阵1.1 相关系数类1.2 距离类1.3 贴近度类3. 聚类4. 其他问题5. 模糊C均值法(FCM) 现在想要对 nnn 个目标 U={x1,...,xn}U=\{x_1,...,x_n\}U={x1​,...,xn​} 分类,并且每个对象都有多个指标,也即 xi...

    个人博客地址 Glooow,欢迎光临~~~


    现在想要对 n n n 个目标 U = { x 1 , . . . , x n } U=\{x_1,...,x_n\} U={x1,...,xn} 分类,并且每个对象都有多个指标,也即 x i = { x i 1 , . . . , x i m } x_i=\{x_{i1},...,x_{im}\} xi={xi1,...,xim}

    模糊聚类通常包括三个步骤:

    1. 建立模糊矩阵
    2. 建立模糊等价矩阵
    3. 进行聚类

    1. 数据标准化

    实际中各个指标的量纲与数量级很可能相差很大,比如高校评价指标中,可能包括科研经费、论文数量、获奖数量等,数量级差别很大,这个时候就需要先对各项数据进行标准化。常用方法有

    标准差标准化
    x i j ′ = x i j − x ˉ j σ j x_{ij}'=\frac{x_{ij}-\bar{x}_j}{\sigma_j} xij=σjxijxˉj
    极差正规化
    x i j ′ ′ = x i j ′ − min ⁡ 1 ≤ i ≤ n { x i j ′ } max ⁡ 1 { x i j ′ } − min ⁡ 1 : i ⩽ n { x i j ′ } \boldsymbol{x}_{i j}^{\prime \prime}=\frac{\boldsymbol{x}_{i j}^{\prime}-\min _{1 \leq i \leq n}\left\{\boldsymbol{x}_{i j}^{\prime}\right\}}{\max _{1}\left\{\boldsymbol{x}_{i j}^{\prime}\right\}-\min _{1: i \leqslant n}\left\{\boldsymbol{x}_{i j}^{\prime}\right\}} xij=max1{xij}min1:in{xij}xijmin1in{xij}
    极差标准化
    x i j ′ = x i j − x ˉ i max ⁡ { x i j } − min ⁡ { x i j } x_{i j}^{\prime}=\frac{x_{i j}-\bar{x}_{i}}{\max \left\{x_{i j}\right\}-\min \left\{x_{i j}\right\}} xij=max{xij}min{xij}xijxˉi
    最大值规格化
    x i j ′ = x i j max ⁡ ( x 1 j , x 2 j , . . . , x n j ) x_{ij}'=\frac{x_{ij}}{\max{(x_{1j},x_{2j},...,x_{nj})}} xij=max(x1j,x2j,...,xnj)xij

    2. 建立模糊相似矩阵

    接下来需要确定不同对象之间的相似度,相似度的确定也有几种常用度量:

    1.1 相关系数类

    在这里插入图片描述

    1.2 距离类

    在这里插入图片描述

    1.3 贴近度类

    在这里插入图片描述

    3. 聚类

    获得模糊相似矩阵以后,需要首先求出传递闭包 t ( R ) t(R) t(R),以获得模糊等价矩阵,然后根据不同的阈值 λ \lambda λ 进行聚类,然后再画出动态聚类图。

    举个栗子

    在这里插入图片描述

    求解过程如下

    0. 特性指标矩阵1. 数据标准化2. 求模糊相似矩阵
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    3. 求传递闭包4. 根据不同阈值聚类5. 画动态聚类图
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    4. 其他问题

    在实际应用过程中,还会出现一些其他问题,比如:

    • 在实际应用中,如何选择适当的 λ \lambda λ?从而给出一个较明确的聚类。

    实际中最佳阈值的确定,可以由专家给出值;也可以应用 F-统计量确定最佳阈值。

    • 如果不用传递闭包,直接对相似矩阵进行聚类会怎么样?

    直接应用模糊相似矩阵进行聚类时,可以首先确定一个阈值 λ \lambda λ,然后根据截集获得一系列聚类结果,由于模糊相似矩阵并不是等价矩阵,因此此时的聚类结果是不严谨的,后面需要对交集非空的集合进行合并(这里可能表述的不清楚,看下面的例子就明白了)

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    • 当样本点很多时(几百万甚至上千万个像素),例如需 要对一张图片上的样本点进行聚类,该怎么办?

    可以应用模糊C均值法(FCM)

    5. 模糊C均值法(FCM)

    x i ( i = 1 , 2 , . . . , n ) x_i(i=1,2,...,n) xi(i=1,2,...,n) 是n个样本组成的样本集合, c c c 为预定的类别数目, u i j u_{ij} uij 是第 i i i 个样本对于第 j j j 类的隶属度函数。用隶属度函数定义的聚类损失函数可以写为
    ∑ j = 1 c ∑ i = 1 n u i j m d i j 2 = ∑ j = 1 c ∑ i = 1 n u i j m ∥ p j − x i ∥ 2 \sum_{j=1}^{c} \sum_{i=1}^{n} u_{i j}^{m} d_{i j}^{2}=\sum_{j=1}^{c} \sum_{i=1}^{n} u_{i j}^{m}\left\|\mathbf{p}_{j}-\mathbf{x}_{i}\right\|^{2} j=1ci=1nuijmdij2=j=1ci=1nuijmpjxi2
    其中 m > 1 m>1 m>1 P j P_j Pj 是第 j j j 类的聚类中心,后面会给出公式。通常也会假设 ∑ j u i j = 1 \sum_j u_{ij}=1 juij=1

    下面则给出该算法的推导:为了最小化损失函数,则可以应用 Lagrange 乘子法
    J = ∑ i = 1 n ∑ j = 1 c u i j m d i j 2 − ∑ i = 1 n λ i ( ( ∑ j = 1 c u i j ) − 1 ) J=\sum_{i=1}^{n} \sum_{j=1}^{c} u_{i j}^{m} d_{i j}^{2}-\sum_{i=1}^{n} \lambda_{i}\left(\left(\sum_{j=1}^{c} u_{i j}\right)-1\right) J=i=1nj=1cuijmdij2i=1nλi((j=1cuij)1)
    λ i , u i j \lambda_i,u_{ij} λi,uij 求偏导等于 0,则可以得到迭代公式为
    u i j = ( 1 d i j ) 2 / ( m − 1 ) ∑ k = 1 c ( 1 d i k ) 2 / ( m − 1 ) p j = ∑ i = 1 n u i j m x i ∑ i = 1 n u i j m u_{i j}=\frac{\left(\frac{1}{d_{i j}}\right)^{2 /(m-1)}}{\sum_{k=1}^{c}\left(\frac{1}{d_{i k}}\right)^{2 /(m-1)}} \\\mathbf{p}_{j}=\frac{\sum_{i=1}^{n} u_{i j}^{m} \mathbf{x}_{i}}{\sum_{i=1}^{n} u_{i j}^{m}} uij=k=1c(dik1)2/(m1)(dij1)2/(m1)pj=i=1nuijmi=1nuijmxi
    由此就可以给出 FCM 算法的框架

    在这里插入图片描述

    展开全文
  • 实用文档 专业信息与计算科学 姓名 学号 实验一 模糊聚类分析 实验目的 掌握数据文件的标准化 模糊相似矩阵的建立方法 会求传递闭包矩阵 会 使用数学软件 MATLAB进行模糊矩阵的有关运算 实验学时 4 学时 实验内容 ...
  • 模糊聚类分析及matlab程序实现 采用模糊数学语言对按一定的要求进行描述和分类的数学方法称为模糊聚类分析聚类分析主要经过标定和聚类两步骤1 1 标定建立模糊相似矩阵 城市居民食品零售价格第t时刻第i种食品的零售价...
  • 模糊聚类分析方法

    万次阅读 多人点赞 2019-05-07 08:33:20
    【3】模糊聚类分析方法:模糊等价矩阵、模糊相似矩阵传递闭包法、布尔矩阵法 【4】模糊决策分析方法 在工程技术和经济管理中,常常需要对某些指标按照一定的标准(相似的程度或亲 疏关系等)进行分类处理...

    模糊数学模型系列博文:

    【1】基本概念: 隶属函数、模糊集合的表示方法、模糊关系、模糊矩阵

    【2】模糊模式识别:海明贴近度 、欧几里得贴近度 、黎曼贴近度、 格贴近度、最大隶属原则、择近原则

    【3】模糊聚类分析方法:模糊等价矩阵、模糊相似矩阵、传递闭包法、布尔矩阵法

    【4】模糊决策分析方法


    在工程技术和经济管理中,常常需要对某些指标按照一定的标准(相似的程度或亲 疏关系等)进行分类处理。例如,根据生物的某些性态对其进行分类,根据空气的性质 对空气质量进行分类,以及工业上对产品质量的分类、工程上对工程规模的分类、图像 识别中对图形的分类、地质学中对土壤的分类、水资源中的水质分类等等。这些对客观 事物按一定的标准进行分类的数学方法称为聚类分析,它是多元统计“物以聚类”的一种分类方法。然而,在科学技术、经济管理中有许多事物的类与类之间并无清晰的划分, 边界具有模糊性,它们之间的关系更多的是模糊关系。对于这类事物的分类,一般用模糊数学方法、我们把应用模糊数学方法进行的聚类分析,称为模糊聚类分析。


    目录

    1 预备知识

    1.1 模糊等价矩阵                       n 阶等价布尔矩阵                           模糊分类

    1.2 模糊相似矩阵

    2 模糊聚类分析法的基本步骤

    (1) 获取数据

    (2) 数据的标准化处理             ① 平移—标准差变换                        ② 平移—极差变换

    Step2: 建立模糊相似矩阵

    (1) 数量积法                                            (2) 夹角余弦法

    (3) 相关系数法                                         (4) 指数相似系数法

    (5) 最大最小值法                                     (6) 算术平均值法

    (7) 几何平均值法                                     (8) 绝对值倒数法

    (9) 绝对值指数法                                     (10) 海明距离法

    (11) 欧氏距离法                                      (12) 切比雪夫距离法

    (13) 主观评分法

    Step3: 聚类

    (1) 传递闭包法                (2) 布尔矩阵法              (3) 直接聚类法

    3 模糊聚类分析应用案例

    (1)建立模糊集合                                  (2)利用格贴近度建立模糊相似矩阵

    (3)求 R 的传递闭包                             (4)选择保留观测站的准则



    1 预备知识

    1.1 模糊等价矩阵

     

     

    n 阶等价布尔矩阵

    模糊分类

     

    1.2 模糊相似矩阵

     

    2 模糊聚类分析法的基本步骤

    Step1: 数据标准化

    (1) 获取数据

    (2) 数据的标准化处理

    在实际问题中,不同的数据可能有不同的性质和不同的量纲,为了使原始数据能够 适合模糊聚类的要求,需要将原始数据矩阵 A 作标准化处理,即通过适当的数据变换,将其转化为模糊矩阵。常用的方法有以下两种:

    ① 平移—标准差变换

    ② 平移—极差变换

    Step2: 建立模糊相似矩阵

    (1) 数量积法

    (2) 夹角余弦法

    (3) 相关系数法

    (4) 指数相似系数法

    (5) 最大最小值法

                      式中 为取小运算min代表取大运算max

    (6) 算术平均值法

    (7) 几何平均值法

    (8) 绝对值倒数法

    (9) 绝对值指数法

    (10) 海明距离法

    (11) 欧氏距离法

    (12) 切比雪夫距离法

    (13) 主观评分法

    Step3: 聚类

    所谓聚类方法就是依据模糊矩阵将所研究的对象进行分类的方法。对于不同的置信 水平λ ∈[0,1],可以得到不同的分类结果,从而形成动态聚类图。常用的方法如下:

    (1) 传递闭包法

    从 Step2 中求出的模糊相似矩阵 R 出发,来构造一个模糊等价矩阵 \large R^{\ast } 。其方法就 是用平方法求出 R 的传递闭包t(R) ,则  t(R) = \large R^{\ast } ;然后,由大到小取一组λ ∈[0,1] , 确定相应的λ 截矩阵,则可以将其分类,同时也可以构成动态聚类图。

    (2) 布尔矩阵法

    (3) 直接聚类法

    此方法是直接由模糊相似矩阵求出聚类图的方法,具体步骤如下:

    3 模糊聚类分析应用案例

    例 15 某地区内有 12 个气象观测站,10 年来各站测得的年降水量如表 3 所示。 为了节省开支,想要适当减少气象观测站,试问减少哪些观察站可以使所得到的降水量 信息仍然足够大?

    解 我们把 12 个气象观测站的观测值看成 12 个向量组,由于本题只给出了 10 年 的观测数据,根据线性代数的理论可知,若向量组所含向量的个数大于向量的维数,则 该向量组必然线性相关。于是只要求出该向量组的秩就可确定该向量组的最大无关组所 含向量的个数,也就是需保留的气象观测站的个数。由于向量组中的其余向量都可由极 大线性无关组线性表示,因此,可以使所得到的降水信息量足够大。

    到目前为止,问题似乎已经完全解决了,可其实不然,因为如果上述观测站的数 据不是 10 年,而是超过 12 年,则此时向量的维数大于向量组所含的向量个数,这样的 向量组未必线性相关。故上述的解法不具有一般性,下面我们考虑一般的解法,首先, 我们利用已有的 12 个气象观测站的数据进行模糊聚类分析,最后确定从哪几类中去掉 几个观测站。

    (1)建立模糊集合

    (2)利用格贴近度建立模糊相似矩阵

    (3)求 R 的传递闭包

    其余观测站属于中间水平。

    (4)选择保留观测站的准则

    显然,去掉的观测站越少,则保留的信息量越大。为此,我们考虑在去掉的观测 站数目确定的条件下,使得信息量最大的准则。由于该地区的观测站分为 4 类,且第 4 类只含有一个观测站,因此,我们从前 3 类中各去掉一个观测站,我们的准则如下:

    (5)求解的 MATLAB 程序如下:

    i)求模糊相似矩阵的 MATLAB 程序

    a=[276.2 324.5 158.6 412.5 292.8 258.4 334.1 303.2 292.9 243.2 159.7 331.2
    251.5 287.3 349.5 297.4 227.8 453.6 321.5 451.0 466.2 307.5 421.1 455.1
    192.7 433.2 289.9 366.3 466.2 239.1 357.4 219.7 245.7 411.1 357.0 353.2
    246.2 232.4 243.7 372.5 460.4 158.9 298.7 314.5 256.6 327.0 296.5 423.0
    291.7 311.0 502.4 254.0 245.6 324.8 401.0 266.5 251.3 289.9 255.4 362.1
    466.5 158.9 223.5 425.1 251.4 321.0 315.4 317.4 246.2 277.5 304.2 410.7
    258.6 327.4 432.1 403.9 256.6 282.9 389.7 413.2 466.5 199.3 282.1 387.6
    453.4 365.5 357.6 258.1 278.8 467.2 355.2 228.5 453.6 315.6 456.3 407.2
    158.2 271.0 410.2 344.2 250.0 360.7 376.4 179.4 159.2 342.4 331.2 377.7
    324.8 406.5 235.7 288.8 192.6 284.9 290.5 343.7 283.4 281.2 243.7 411.1];
    mu=mean(a),sigma=std(a)
    for i=1:12
        for j=1:12
            r(i,j)=exp(-(mu(j)-mu(i))^2/(sigma(i)+sigma(j))^2);
        end
    end
    r
    save data1 r a

    ii)矩阵合成的 MATLAB 函数

    function rhat=hecheng(r);
    n=length(r);
    for i=1:n
        for j=1:n
            rhat(i,j)=max(min([r(i,:);r(:,j)']));
        end
    end

    iii)求模糊等价矩阵和聚类的程序

    load data1
    r1=hecheng(r)
    r2=hecheng(r1)
    r3=hecheng(r2)
    bh=zeros(12);
    bh(find(r2>0.998))=1 

    iv)计算表6的程序  编写计算误差平方和的函数如下:

    function err=wucha(a,t);
    b=a;b(:,t)=[];
    mu1=mean(a,2);mu2=mean(b,2);
    err=sum((mu1-mu2).^2);

    计算28个方案的主程序如下:

    load data1
    ind1=[1,5];ind2=[2:3,6,8:11];ind3=[4,7];
    so=[];
    for i=1:length(ind1)
        for j=1:length(ind3)
            for k=1:length(ind2)
                t=[ind1(i),ind3(j),ind2(k)];
                err=wucha(a,t);
                so=[so;[t,err]];
            end
        end
    end
    so
    tm=find(so(:,4)==min(so(:,4)));
    shanchu=so(tm,1:3)

    模糊数学模型系列博文:

    【1】基本概念: 隶属函数、模糊集合的表示方法、模糊关系、模糊矩阵

    【2】模糊模式识别:海明贴近度 、欧几里得贴近度 、黎曼贴近度、 格贴近度、最大隶属原则、择近原则

    【3】模糊聚类分析方法:模糊等价矩阵、模糊相似矩阵、传递闭包法、布尔矩阵法

    【4】模糊决策分析方法


     

    展开全文
  • 模糊相似关系方程X2=X的分解构造理论基础上,用泛函分析方法证明了与给定的模糊相似阵距离最近的最优模糊等价阵的存在性与局部唯一性;还证明了局部最优模糊等价阵...
  • 模糊数学 3、模糊聚类

    千次阅读 2020-06-04 14:00:13
    假设有m个对象,每个对象有n个特征来描述,构成的矩阵就是m*n的一个矩阵(行i代表一个对象,列j代表一个特征,(i,j)就是滴i个对象的第j个特征的值),每个特征的衡量的量纲不一样,所以我们要对数据进行标准化...
  • 模糊数学Python(二)模糊聚类分析

    千次阅读 2018-11-22 17:27:01
    np.set_printoptions(precision=2) # 设置矩阵输出精度,保留两位小数 def jmax(a): &amp;quot;&amp;quot;&amp;quot; 数据标准化 最大值规格化法 &amp;quot;&amp;quot;&amp;...
  • python/matlab进行模糊聚类分析

    千次阅读 多人点赞 2019-09-30 18:12:11
    根据标准化处理后的数据,用Matlab(或Python)编程,建立模糊相似矩阵,并编程求出其传递闭包矩阵; 根据模糊等价矩阵,编程绘制动态聚类图; 根据原始数据,编程确定最佳分类结果。 原始数据如下: no Y1 Y2 Y3 Y4...
  • 对TBC特征矩阵进行平移极差变换,利用指数切比雪夫距离法构建了模糊相似矩阵,采用模糊聚类中的传递闭包法构建进化树。该方法不需要多序列比对,计算简单。对两组基因组序列构建进化树,实验结果验证了该方法的有效...
  • 模糊聚类分析和模式识别

    千次阅读 2019-06-26 16:51:56
    ——按照一定的要求和规律对事物进行区分和分类的过程,在这一过程中没有任何关于分类的先验知识,仅靠事物间的相似性作为类属划分的准则。 分类: 1、传统的聚类分析是一种硬划分,即将每个待辨识的对象严格地划分...
  • 模糊数学模型系列博文: ...【3】模糊聚类分析方法:模糊等价矩阵、模糊相似矩阵传递闭包法、布尔矩阵法 【4】模糊决策分析方法 目录 1.1 模糊数学简介 1.2.1 模糊集和隶属函数 1.2.2 模糊集合的表示方法 ...
  • 模糊聚类分析C程序实现,付尚朴,,本文用C语言编程实现了基于传递闭包的模糊聚类分析,分析事物的类别和优劣,对事物作出评估。采用作者发现的模糊相似矩阵传递闭��
  • 本实验所用的模糊聚类分析方法为基于模糊关系(矩阵)的聚类分析方法,采用模糊传递闭包法。...模糊相似矩阵R的传递闭包t(R)就是一个模糊等价矩阵,以t(R)为基础进行分类的聚类方法则称为模糊传递闭包法。
  • 分析了基于摄动的模糊聚类方法(fuzzy clustering method ...得到的等价矩阵"失真"小于传递闭包法所得结果,从而获得更为精确可靠的聚类效果,将FCMBP模糊聚类方法推广到能够处理高阶模糊相似矩阵的情形,满足应用需要.
  • 模糊关系合成运算的Matlab实现

    千次阅读 2020-03-23 21:03:55
    最近课程学到模糊数学,里面有关于模糊矩阵乘法,传递闭包的概念,十分不好理解,本来想手算几个例子来理解的,结果算到一半就烦了还十分容易算错,于是我就打算用matlab编写一个。 这里就不讲什么是模糊矩阵的乘法...
  • 模糊聚类分析

    千次阅读 2018-12-16 22:34:15
    文章目录基于模糊等价矩阵的聚类分析方法建立模糊矩阵建立模糊等价矩阵建立模糊相似矩阵数据预处理——数据标准化平移-极差变换(变换至0-1区间)平移-标准差变换(消除量纲)模糊相似矩阵的建立相似系数法数量积...
  • 1 基于Matlab的模糊聚类分析...预备知识 聚类分析和模糊聚类分析 模糊相似矩阵 模糊等价矩阵 模糊矩阵的 - 截矩阵 模糊传递闭包和等价闭包 4 定义一模糊聚类分析 在科学技术经济管理中常常需要按一定的标准(相似程度
  • 论文研究-基于进化规划的FCMBP模糊聚类改进方法.pdf, ... 得到的等价矩阵"失真"小于传递闭包法所得结果,从而获得更为精确可靠的聚类效果, 将FCMBP模糊聚类方法推广到能够处理高阶模糊相似矩阵的情形, 满足应用需要.
  • 实用文档 原始数据矩阵 X= 标准化矩阵 相似系数法 欧式距离 求分类对象的相似度 距离法 明氏距离 切比雪夫距离 模糊相似矩阵 R 1 主观评分法 传递闭包传递闭包法进行聚类求动态聚类图 布尔矩阵法 等价关系矩阵 ...
  • 模糊数学学习笔记 4:模糊关系

    千次阅读 2020-03-01 17:37:19
    模糊关系性质3.1 自反性、对称性、传递性3.2 模糊相似关系与等价关系 1. 模糊关系 定义:模糊关系 RRR 的隶属函数 μR:U×V→[0,1]\mu_R:U\times V\to[0,1]μR​:U×V→[0,1],其中 μR(x,y)\m...
  • day8:模糊数学

    2020-08-08 17:55:26
    1.模糊数学概述 1.1量的分类 分为确定性的量与不确定性的量 常见确定性的量:经典数学(几何,代数)1+1=2 常见不确定性的量: 1.随机性(概率统计,随机过程) 2.灰性(灰色系统) 3.模糊性(模糊数学) 1.2模型性...
  • 模糊决策分析方法

    万次阅读 多人点赞 2019-05-07 09:26:40
    【3】模糊聚类分析方法:模糊等价矩阵、模糊相似矩阵传递闭包法、布尔矩阵法 【4】模糊决策分析方法 模糊数学中有一个研究的热点问题就是“模糊决策”,它就是研究在模糊环境下或者 模糊系统中进行决策的...
  • 模糊聚类算法(FCM)

    2019-05-15 15:37:13
    针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于相似性关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最大支撑树方法,以及基于数据集的凸分解、动态规划和难以辨别关系等...
  • Ø 总体概述 模糊数学已经使用到各个领域,其在图像的分割中也是常用的经典方法,...模糊等价关系是同时满足自反性、对称性和传递性的模糊关系,因此必定有如下特性: (1)自反性:保证关系中元素和元素本身是...
  • 用评价对象的样本的特征函数构建模糊相似矩阵,计算模糊相似矩阵传递闭包,按传递闭包进行不同λ水平截集的聚类,可以获得科学合理的分类结果。以评价地区经济发展水平为例,阐述了多因素评价体系的模糊聚类分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 385
精华内容 154
热门标签
关键字:

模糊相似矩阵传递闭包