⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kcluster.m

📁 一种基于软划分方法的聚类方法——模糊k均值法聚类分析。
💻 M
字号:
function [U_new, center, obj_fcn] = steprfcm(data, U, cluster_n, expo) 
%STEPFCM One step in fuzzy c-mean clustering. 
%   [U_NEW, CENTER, ERR] = STEPFCM(DATA, U, CLUSTER_N, EXPO) 
%   performs one iteration of fuzzy c-mean clustering, where 
% 
%   DATA: matrix of data to be clustered. (Each row is a data point.) 
%   U: partition matrix. (U(i,j) is the MF value of data j in cluster j.) 
%   CLUSTER_N: number of clusters. 
%   EXPO: exponent (> 1) for the partition matrix. 
%   U_NEW: new partition matrix. 
%   CENTER: center of clusters. (Each row is a center.) 
%   ERR: objective function for partition U. 
% 
%   Note that the situation of "singularity" (one of the data points is 
%   exactly the same as one of the cluster centers) is not checked. 
%   However, it hardly occurs in practice. 
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
mf = U.^expo;       % MF matrix after exponential modification 
center = mf*data./((ones(size(data, 2), 1)*sum(mf'))'); % new center 
dist = distfcm(center, data);       % fill the distance matrix 
obj_fcn = sum(sum((dist.^2).*mf));  % objective function 
tmp = dist.^(-2/(expo-1));      % calculate new U, suppose expo != 1 
U_new0 = tmp./(ones(cluster_n, 1)*sum(tmp)); 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
dist_center=distfcm(center,center); 
%dist(find(dist_center==0))=1000; 
%min_dist_center=min(min(dist_center));%找到中心点距离最小的值 
%Threshold=min_dist_center;%设定下近似的阈值 
 
[m,n]=size(data); 
U_new=[]; 
for i=1:m 
    D=distfcm(center,data(i,:));%求各点到中心点的距离% 
    [j,k]=sort(D);%对距离排序,找出最近的两个中心点 
    D1=D(k(2))-D(k(1));%求点到最近的两个中心点的距离差 
     
    if D1>=dist_center(k(1),k(2))*0.98;    
        U_new1=U_new0(:,i); 
        U_new1=zeros(size(U_new1)); 
        U_new1(k(1))=1; 
    else 
        U_new1=U_new0(:,i);     
    end 
    U_new=[U_new,U_new1]; 
end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -