資源簡介
FCM聚類。。
代碼片段和文件信息
function[centerUobj_fun]=FCMCluster(datanoptions)
%采用模糊C均值將數據集data分為n類
%用法
%?1?[centerUobj_fcn]=FCMCluster(datanoptions);
%?2?[centerUobj_fcn]=FCMCluster(datan);
%輸入?
%?data????n*m矩陣,n個樣本數,每個樣本的維度為m
%?n???????類別數
%?options?4*1?矩陣
%???options(1):隸屬度矩陣U的加權指數>1(缺省值2.0)
%???options(2):最大迭代次數(缺省值100)
%???options(3):隸屬度最小變化量,迭代終止條件(缺省值1e-5)
%???options(4):每次迭代是否輸出信息標志(缺省值0)
%輸出
%?center????聚類中心
%?U?????????隸屬度矩陣
%?obj_fun???目標函數值
if?nargin~=2?&&?nargin~=3
????error(‘Too?many?or?too?few?input?arguments‘);??
end?
data_n=size(data1);???%求出data的第一維數,即行數、樣本數?????
in_n=size(data2);??%求出data的第二維數,即列數、特征屬性個數
%默認參數
default_options=[2;100;1e-6;1];%隸屬度矩陣U的指數2,最大迭代次數100,
???????????????????????????????%隸屬度最小變化量,迭代終止條件1e-5
???????????????????????????????%1指輸出迭代信息標志,可以設為0不輸出。
%參數配置
??%如果只輸入前兩個參數,選用默認的參數;如果參數個數小于4,其他選用默認參數
??if?nargin==2
??????options=default_options;???%如果輸入參數是2,則調用默認的option
??else
???????if?length(options)<4??%如果option<4,則使用其他默認值
???????????tmp=default_options;
???????????tmp(1:length(options))=options;
???????????options=tmp;
???????end?
???????nan_index=find(isnan(options)==1);?%檢測option中是否有nan值
???????options(nan_index)=default_options(nan_index);%將default_option的對應位
?????????????????????????????????????????????%置的數值給option中不是數的位置
???????if?options(1)<=1
???????????error(‘The?exponent?should?be?greater?than?1!‘);
???????end??%如果模糊矩陣的指數<=1,給出報錯。
??end?
??%將options?中的分量分別賦值給四個變量
??expo=options(1);?%隸屬度矩陣U的指數
??max_iter=options(2);%最大迭代次數
??min_impro=options(3);%隸屬度最小變化量,迭代終止條件
??displ
- 上一篇:用MATLAB畫點電荷的電場線
- 下一篇:計算方法上機實驗報告-matlab
評論
共有 條評論