基于传递闭包法模糊聚类的电负荷分类

基于传递闭包法模糊聚类的电负荷分类

参考文献:《模糊聚类在负荷实测建模中的应用——黄梅》

1 模糊聚类的应用

模糊聚类是一种使用模糊集理论以分析复杂数据集的流行无监督学习技术。其目标是基于不同的相似度或距离度量将给定数据集中相似的对象归入不同的簇或类别中。不同于传统的硬聚类方法,模糊聚类根据对象对于每个簇的隶属度或属于该簇的可能性来分配对象给簇,而非简单的二元决策。这个系统允许对象存在重叠隶属关系,也就是数据点可以同时属于多个簇。
模糊聚类被广泛应用于各种领域,如图像处理、模式识别、生物信息学等。模糊聚类最基本的应用之一是在模式识别中。它可以基于不同的相似性测量,如统计相似性、几何相似性和关系相似性,将对象进行分类。
模糊聚类的另一种应用是图像处理。在这个领域中,可以使用模糊聚类对图像进行分割、提取特征并分类。例如,模糊聚类可通过像素之间的相似性将图像的不同区域分离出来,从而识别图像中的不同区域。
在生物信息学中,模糊聚类被用于分析DNA和RNA序列数据。这种技术已被用于识别生物系统中的主要通路,以及识别不同基因标记之间的模式和关系。

2 传递闭包法模糊聚类理论
传递闭包法是一种常用的模糊聚类算法,它通过计算样本之间的相似度来识别数据集中的模糊聚类结构。

传递闭包法的基本思想是,将数据集中的每个样本看作一个聚类中心,然后通过计算样本之间的相似度来确定聚类中心之间的关系。具体而言,传递闭包法通过计算样本之间的距离或相似度矩阵,然后根据相似度的阈值来确定样本之间的关系。

传递闭包法的关键在于传递闭包的计算。传递闭包是指对于任意两个样本之间存在一条路径,使得路径上的所有样本之间的相似度都大于等于给定的阈值。通过计算传递闭包,可以将样本划分为不同的聚类簇。

传递闭包法的步骤如下:

1)初始化:将每个样本看作一个聚类中心。

2)计算相似度矩阵:根据样本之间的距离或相似度计算相似度矩阵。

3)构建传递闭包:根据相似度矩阵和给定的阈值,计算传递闭包。

4)划分聚类簇:根据传递闭包,将样本划分为不同的聚类簇。

传递闭包法的优点是可以处理不规则形状的聚类结构,并且不需要预先确定聚类的数量。然而,传递闭包法也存在一些缺点,如对初始聚类中心的选择敏感,对阈值的选择较为困难等。

总的来说,传递闭包法是一种基于相似度的模糊聚类算法,通过计算样本之间的相似度和传递闭包来识别数据集中的模糊聚类结构。

3 测试负荷
在这里插入图片描述

4 负荷分类结果
在这里插入图片描述

5 matlab程序
1)主函数
%% 基于传递闭包法模糊聚类的电负荷分类

clc

close all

%1-24小时负荷

load=[455.390000000000;405.948000000000;333.086000000000;275.836000000000;205.576000000000;145.725000000000;130.112000000000;131.112000000000;137.918000000000;150.929000000000;163.941000000000;182.156000000000;208.178000000000;195.167000000000;156.134000000000;150.929000000000;161.338000000000;169.145000000000;169.145000000000;176.952000000000;195.167000000000;210.781000000000;296.654000000000;497.026000000000];

%隶裕度计算

x=zeros(24,2);

for i=1:2

for j=1:24

    if i==1

        x(j,i)=(load(j)-min(load))/(max(load)-min(load));

    end

    if i==2

        x(j,i)=(max(load)-load(j))/(max(load)-min(load));

    end

end

end

[X]=F_JISjBzh(1,x);%标准化

[R]=F_JlR(8,X);%求模糊相似矩阵

F_JIDtjl®;%分类

figure

plot(load)

2)子函数


function F_JIDtjl(R)%定义函数
%模糊聚类分析动态聚类
%R模糊相似矩阵
[m,n]=size(R);%获得矩阵的行列数
if(m~=n|m==0) 
    return ;
end
for(i=1:n) R(i,i)=1;%修正错误
    for(j=i+1:n) 
        if(R(i,j)<0) R(i,j)=0;
elseif(R(i,j)>1) R(i,j)=1;
        end
        R(i,j)=round(10000*R(i,j))/10000;%保留四位小数
        R(j,i)=R(i,j);
    end
end
js0=0;
while(1)%求传递闭包
    R1=Max_Min(R,R);%【见附录3.6.1】
js0=js0+1;
    if(R1==R) break;
    else
        R=R1;
    end
end
Imd(1)=1;k=1;
for(i=1:n) 
    for(j=i+1:n) pd=1;%找出所有不相同的元素
        for(x=1:k) 
if(R(i,j)==Imd(x)) 
    pd=0;
    break;
end;
        end
        if(pd) 
            k=k+1;
            Imd(k)=R(i,j);
        end
    end;end
for(i=1:k-1) for(j=i+1:k) 
if(Imd(i)<Imd(j))%从大到小排序
            x=Imd(j);Imd(j)=Imd(i);Imd(i)=x;
        end;end;end
for(x=1:k) %按Imd(x)分类,分类数为flsz(x),临时用Sz记录元素序号
   js=0;flsz(x)=0;
   for(i=1:n) pd=1;
       for(y=1:js) if(Sz(y)==i) pd=0;break;end;end
       if(pd)
           for(j=1:n) 
if(R(i,j)>=Imd(x)) js=js+1;Sz(js)=j;end;end
           flsz(x)=flsz(x)+1;
       end
   end
end
for(i=1:k-1) 
for(j=i+1:k) 
if(flsz(j)==flsz(i)) flsz(j)=0;end;end;end
fl=0;%排除相同的分类
for(i=1:k) if(flsz(i)) fl=fl+1;Imd(fl)=Imd(i);end;end
for(i=1:n) xhsz(i)=i;end
for(x=1:fl)%获得分类情况:对元素分类进行排序
    js=0;flsz(x)=0;
    for(i=1:n) pd=1;
        for(y=1:js) if(Sz(y)==i) pd=0;break;end;end
        if(pd) if(js==0) y=0;end
            for(j=1:n) if(R(i,j)>=Imd(x)) js=js+1;Sz(js)=j;end;end
            flsz(x)=flsz(x)+1;
            Sz0(flsz(x))=js-y;
        end
    end
    js0=0;
    for(i=1:flsz(x))
        for(j=1:Sz0(i)) Sz1(j)=Sz(js0+j);end
        for(j=1:n) for(y=1:Sz0(i)) 
if(xhsz(j)==Sz1(y)) 
js0=js0+1;Sz(js0)=xhsz(j);end;end;end
    end
    for(i=1:n) xhsz(i)=Sz(i);end
end
for(x=1:fl)%获得分类情况:每一子类的元素个数
    js=0;flsz(x)=0;
    for(i=1:n) pd=1;
        for(y=1:js) if(Sz(y)==i) pd=0;break;end;end
        if(pd) if(js==0) y=0;end
            for(j=1:n) if(R(i,j)>=Imd(x)) js=js+1;Sz(js)=j;end;end
            flsz(x)=flsz(x)+1;Sz0(flsz(x))=js-y;
        end
    end
    js0=1;
    for(i=1:flsz(x)) y=1;
        for(j=1:flsz(x))
            if(Sz(y)==xhsz(js0)) flqksz(x,i)=Sz0(j);js0=js0+Sz0(j);break;end
            y=y+Sz0(j);
        end
    end
end
F_dtjltx=figure('name','动态聚类图','color','w');
axis('off');
Kd=30;Gd=40;y=fl*Gd+Gd;lx=80;
text(24,y+Gd/2,'λ');
for(i=1:n)
    text(lx-5+i*Kd-0.4*Kd*(xhsz(i)>9),y+Gd/2,int2str(xhsz(i)));
    line([lx+i*Kd,lx+i*Kd],[y,y-Gd]);
    linesz(i)=lx+i*Kd;
end
text(lx*1.25+i*Kd,y+Gd/2,'分类数');
y=y-Gd;
for(x=1:fl)
    text(8,y-Gd/2,num2str(Imd(x)));
    js0=1;js1=0;
    if(x==1)
        for(i=1:flsz(x))
            js1=flqksz(x,i)-1;
            if(js1) line([linesz(js0),linesz(js0+js1)],[y,y]);end
            line([(linesz(js0+js1)+linesz(js0))/2,(linesz(js0+js1)+linesz(js0))/2],[y,y-Gd]);
            linesz(i)=(linesz(js0+js1)+linesz(js0))/2;
            js0=js0+js1+1;
        end
            else for(i=1:flsz(x))
                    js1=js1+flqksz(x,i);
                    js2=0;pd=0;
                    for(j=1:flsz(x-1))
                        js2=js2+flqksz(x-1,j);
                        if(js2==js1) pd=1;break;end
                    end
                    if(j~=js0) line([linesz(js0),linesz(j)],[y,y]);end
                    line([(linesz(js0)+linesz(j))/2,(linesz(js0)+linesz(j))/2],[y,y-Gd]);
                    linesz(i)=(linesz(js0)+linesz(j))/2;
                    js0=j+1;
                end;end
            text(1.5*lx+n*Kd,y-Gd/3,int2str(flsz(x)));
            y=y-Gd;
    end
function [X]=F_JISjBzh(cs,X)
%模糊聚类分析数据标准化变换
%X原始数据矩阵;cs=0,不变换;cs=1,标准差变换
%cs=2,极差变换
if(cs==0) return ;end
[n,m]=size(X);% 获得矩阵的行列数
if(cs==1) % 平移极差变换 
    for(k=1:m) xk=0;
        for(i=1:n) xk=xk+X(i,k);end
        xk=xk/n;sk=0;
        for(i=1:n) sk=sk+(X(i,k)-xk)^2;end
        sk=sqrt(sk/n);
        for(i=1:n) X(i,k)=(X(i,k)-xk)/sk;end
    end
else %平移*极差变换
    for(k=1:m) xmin=X(1,k);xmax=X(1,k);
        for(i=1:n)
            if(xmin>X(i,k)) xmin=X(i,k);end
            if(xmax<X(i,k)) xmax=X(i,k);end
        end
        for(i=1:n) X(i,k)=(X(i,k)-xmin)/(xmax-xmin);end
        end
end
function F_jlfx(bzh,fa,X)
%模糊聚类分析
%bah数据标准型;fa建立模糊相似矩阵的方法;X原始数据矩阵
X=F_jisjbzh(bzh,X);
R=F_jir(fa,X);
[m,n]=size(R);
if(m~=n|m==0)
    return;
end
F_JIDtjl(R)
function[R]=F_JlR(cs,X)%定义函数
%模糊聚类分析建立模糊相似矩阵: [R]=F_JlR(cs,X)
%X,数据矩阵
%cs=1,数量积法
%cs=2,夹角余弦法
%cs=3,相关系数法
%cs=4,指数相似系数法
%cs=5,最大最小法
%cs=6,算术平均最小法
%cs=7,几何平均最小法
%cs=8,一般欧式距离法
%cs=9,一般海明距离法
%cs=10,一般切比雪夫距离法
%cs=11,倒数欧式距离法
%cs=12,倒数海明距离法
%cs=13,倒数切比雪夫距离法
%cs=14,指数欧式距离法
%cs=15,指数海明距离法
%cs=16,指数切比雪夫距离法
[n,m]=size(X);%获得矩阵的行列数
R=[];
if(cs==1)
    maxM=0;
    pd=0;%数量积法
    for(i=1:n)for(j=1:n)if(j~=i)x=0;
        for(k=1:m)x=x+X(i,k)*X(j,k);end
        if(maxM<x)maxM=x;end
    end;end;end
    if(maxM<0.000001)return;end
    for(i=1:n)for(j=1:n)
        if(i==j)R(i,j)=1;
        else R(i,j)=0;
            for(k=1:m)R(i,j)=R(i,j)+X(i,k)*X(j,k);end
            R(i,j)=R(i,j)/maxM;
            if(R(i,j)<0)pd=1;end
        end
    end;end
    if(pd)for(i=1:n)for(j=1:n)R(i,j)=(R(i,j)+1)/2;end;end;end
elseif(cs==2)%夹角余弦法
    for(i=1:n)for(j=1:n)xi=0;xj=0;
        for(k=1:m)xi=xi+X(i,k)^2;xj=xj+X(j,k)^2;end
        s=sqrt(xi*xj);R(i,j)=0;
        for(k=1:m)R(i,j)=R(i,j)+X(i,k)*X(j,k);end
        R(i,j)=R(i,j)/s;
    end;end
elseif(cs==3)%相关系数法
    for(i=1:n)for(j=1:n)xi=0;xj=0;
        for(k=1:m)xi=xi+X(i,k);xj=xj+X(j,k);end
        xi=xi/m;xj=xj/m;xis=0;xjs=0;
        for(k=1:m)xis=xis+(X(i,k)-xi)^2;xjs=xjs+(X(j,k)-xj)^2;end
        s=sqrt(xis*xjs);R(i,j)=0;
        for(k=1:m)R(i,j)=R(i,j)+abs((X(i,k)-xi)*(X(j,k)-xj));end
        R(i,j)=R(i,j)/s;
    end;end
elseif(cs==4)%指数相似系数法
    for(i=1:n)for(j=1:n)R(i,j)=0;
        for(k=1:m)xk=0;
            for(z=1:n)xk=xk+X(z,k);end
            xk=xk/n;sk=0;
            for(z=1:n)sk=sk+(X(z,k)-xk)^2;end
            sk=sk/n;R(i,j)=R(i,j)+exp(-0.75*((X(i,k)-X(j,k))/sk)^2);
        end
        R(i,j)=R(i,j)/m;
    end;end
elseif(cs<=7)%最大最小法 算术平均最小法 几何平均最小法
    for(i=1:n)for(j=1:n)fz=0;fm=0;
        for(k=1:m)
            if(X(j,k)<0)R=[];return;end
            if(X(j,k)>X(i,k))x=X(i,k);
            else x=X(j,k);end
            fz=fz+x;
        end
        if(cs==5)%最大最小法
            for(k=1:m)if(X(i,k)>X(j,k))x=X(i,k);else x=X(j,k);end
            fm=fm+x;end
        elseif(cs==6)for(k=1:m)fm=fm+(X(i,k)+X(j,k))/2;end%算术平均最小法
        else for(k=1:m)fm=fm+sqrt(X(i,k)*X(j,k));end;end%几何平均最小法
        R(i,j)=fz/fm;
    end;end
elseif(cs<=10)C=0;%一般距离法
    for(i=1:n)for(j=i+1:n)d=0;
        if(cs==8)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
            d=sqrt(d);%欧式距离
        elseif(cs==9)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%海明距离
        else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%切比雪夫距离
        if(C<d)C=d;end
    end;end
    C=1/(1+C);
    for(i=1:n)for(j=1:n)d=0;
        if(cs==8)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
            d=sqrt(d);%欧式距离
        elseif(cs==9)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%海明距离
        else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%切比雪夫距离
        R(i,j)=1-C*d;
    end;end
elseif(cs<=13)minM=Inf;%倒数距离法
    for(i=1:n)for(j=i+1:n)d=0;
        if(cs==11)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
            d=sqrt(d);%欧式距离
        elseif(cs==12)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%海明距离
        else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%切比雪夫距离
        if(minM>d)minM=d;end
    end;end
    minM=0.9999*minM;
    if(minM<0.000001)return;end
    for(i=1:n)for(j=1:n)d=0;
        if(j==i)R(i,j)=1;continue;end
        if(cs==11)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
            d=sqrt(d);%欧式距离
        elseif(cs==12)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%海明距离
        else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%切比雪夫距离
        R(i,j)=minM/d;
    end;end
else for(i=1:n)for(j=1:n)d=0;%指数距离法
    if(cs==14)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end
        d=sqrt(d);%欧式距离
    elseif(cs==15)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end%海明距离
    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end%切比雪夫距离
    R(i,j)=exp(-d);
end;end;end
end
function [C]=Max_Min(A,B)
%模糊矩阵的合成运算,先取大,后取小
[m,s]=size(A);[s1,n]=size(B);C=[];
if(s1~=s) return ;end
for(i=1:m) for(j=1:n) C(i,j)=0;
        for(k=1:s) x=0;
            if(A(i,k)<B(k,j)) x=A(i,k);
            else x=B(k,j);end
            if(C(i,j)<x) C(i,j)=x;end
        end
    end;end

猜你喜欢

转载自blog.csdn.net/weixin_47365903/article/details/131214575