• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: matlab  模糊聚类  

资源简介

一个用Matlab实现的模糊聚类算法,原始数据存放于F盘跟目录下,也可自己设置。里面的注释也还可以,应该都能看懂,如果有一些模糊聚类算法基础的话。

资源截图

代码片段和文件信息

%%%%%%%%%%%%%%%模糊聚类%%%%%%%%%%%%%%%%%%%%%%%
clear;
load F:\data.txt;
INPUTDATA=data;
%--------原始数据标准化-------%
disp(‘请选择原始数据标准化方式: ‘);
disp(‘<1-总和标准化|2-标准差标准化|3-极大值标准化|4-极差标准化>‘);
wayforstand=input(‘请输入: ‘);
switch wayforstand
    case 1
        DATAFORCLUS=standard_use_sum(INPUTDATA);
    case 2
        DATAFORCLUS=standard_use_std(INPUTDATA);
    case 3
        DATAFORCLUS=standard_use_max(INPUTDATA);
    case 4
        DATAFORCLUS=standard_use_jc(INPUTDATA);
    otherwise
        error(‘您的输入不符合要求->执行结束!!!‘);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基于模糊等价关系的模糊聚类%%%%%%%%%%%%%%%%%%%%%%
%----------构造相似关系-----------%
numrows=size(DATAFORCLUS1);
numcols=size(DATAFORCLUS2);
disp(‘请选择对象之间相似性统计量的方式: ‘);
disp(‘<1-相关系数法|2-夹角余弦法|3-指数相似系数法|4-绝对值指数法|5-算术平均最小法|6-最大最小值法|7-绝对值差数法|8-数量积法>‘);
wayforr_ij=input(‘请输入: ‘);
switch wayforr_ij
    case 1 %-----------------------------------相关系数法
        for i=1:numrows
            for j=1:numrows
                meani=mean(DATAFORCLUS(i:));meanj=mean(DATAFORCLUS(j:));           
                simiR(ij)=sum((DATAFORCLUS(i:)-meani).*(DATAFORCLUS(j:)-meanj))/...
                (sqrt(sum((DATAFORCLUS(i:)-meani).^2))*sqrt(sum((DATAFORCLUS(j:)-meanj).^2)));   
            end
        end
    case 2 %-----------------------------------夹角余弦法
        for i=1:numrows
            for j=1:numrows
                simiR(ij)=sum(DATAFORCLUS(i:).*DATAFORCLUS(j:))/...
                (sqrt(sum(DATAFORCLUS(i:).*DATAFORCLUS(i:)))*sqrt(sum(DATAFORCLUS(j:).*DATAFORCLUS(j:))));
            end
        end
    case 3 %-----------------------------------指数相似系数法

    case 4 %-----------------------------------绝对值指数法

    case 5 %-----------------------------------算术平均最小法
      
    case 6 %-----------------------------------最大最小值法
   
    case 7 %-----------------------------------绝对值差数法
     
    case 8 %-----------------------------------数量积法

    otherwise
         error(‘您的输入不符合要求->执行结束!!!‘);
end
%-------改造成等价关系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while sign==0
    for i=1:numrows
        for j=1:numrows
            for c=1:numrows
            rij_temp(c)=min([equi_tem(

评论

共有 条评论