计算智能课程设计(基于传递闭包的模糊聚类)

实验题目

基于传递闭包的模糊聚类

背景知识

实验目的

掌握建立模糊等价矩阵的方法,会求传递闭包矩阵;掌握利用传递闭包进行模糊聚类的一般方法;会使用Python进行模糊矩阵的有关运算。

实验内容

运行和理解示例代码,回答下列问题:

1)为什么按最大最小法得到的一定是一个方阵?且一定是自反方阵?且一定是对称方阵?

2)为什么可以根据水平截集对数据进行分类?(提示:一个等价关系唯一确定一个划分)

3)请解释代码 72 行中两个-1 的含义:

return np.sort(np.unique(a).reshape(-1))[::-1]

4)在平方法的代码实现中,如何判断平方后的矩阵是否满足传递性?为什么可以这么判断?

5)请修改代码,将最大最小法替换为算术平均最小法。这会改变最终的聚类结果么?

实验结果与分析

第一题

1)为什么按最大最小法得到的一定是一个方阵?且一定是自反方阵?且一定是对称方阵?

  1. 因为按照最大最小法来做,当i==j时,有:

在这里插入图片描述

所以有

计算智能课程设计(基于传递闭包的模糊聚类)_第1张图片

故,得到的方阵一定是自反方阵

  1. 对于

计算智能课程设计(基于传递闭包的模糊聚类)_第2张图片

计算智能课程设计(基于传递闭包的模糊聚类)_第3张图片

故它一定是对称方阵。

第二题

2)为什么可以根据水平截集对数据进行分类?(提示:一个等价关系唯一确定一个划分)

由于模糊相似矩阵本身已经是自反的、对称的,其传递闭包又是传递的,则其传递闭包一定是模糊等价矩阵,可以决定一个划分。

第三题

3)请解释代码 72 行中两个-1 的含义:

前面的-1是自动推断行数或列数

后面的-1是逆序

return np.sort(np.unique(a).reshape(-1))[::-1]

第四题

4)在平方法的代码实现中,如何判断平方后的矩阵是否满足传递性?为什么可以这么判断?

判断代码如下:

FuzzySimilarMatrix(a)==MatrixComposition(MatrixComposition(a, c), MatrixComposition(a, c)).all

从模糊相似矩阵得到传递闭包,采用的方法是平方法,具体方法是:把一个相似矩阵,进行自乘操作,得到并且检验是否满足传递性,如果满足,则停止。

原理:

在这里插入图片描述

第五题

5)请修改代码,将最大最小法替换为算术平均最小法。这会改变最终的聚类结果么?

修改代码:

def FuzzySimilarMatrix(a):
    """
    用最大最小法构造得到模糊相似矩阵
    """
    a = MaxNormalization(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([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])/2  # 求并的和
        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 c

会改变最终的聚类结果。

你可能感兴趣的:(聚类,机器学习,算法)