


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、模糊c均值聚類(lèi)FCM算法的MATLAB代碼我做畢業(yè)論文時(shí)需要模糊 C-均值聚類(lèi),找了好長(zhǎng)時(shí)間才找到這個(gè),分享給大家:FCM算法的兩種迭代形式的MATLAB代碼寫(xiě)于下,也許有的同學(xué)會(huì)用得著m文件1/7:fun ctio n U,P ,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm(Data,C,plotflag,M,epsm)%模糊C均值聚類(lèi)FCM:從隨機(jī)初始化劃分矩陣開(kāi)始迭代% U,P ,Dist,Cluster_Res,Obj_Fcn,iter = fuzzycm(Data,C,plotflag,M,epsm)%輸入:% Data: N XS型矩陣,聚類(lèi)的原始數(shù)據(jù)
2、,即一組有限的觀測(cè)樣本集,%Data的每一行為一個(gè)觀測(cè)樣本的特征矢量,S為特征矢量%的維數(shù),N為樣本點(diǎn)的個(gè)數(shù)% C:聚類(lèi)數(shù),1<C<N%plotflag: 聚類(lèi)結(jié)果2D/3D 繪圖標(biāo)記,0表示不繪圖,為缺省值%M:加權(quán)指數(shù),缺省值為2% epsm: FCM 算法的迭代停止閾值,缺省值為1.0e-6%輸出:%U:CXN型矩陣,FCM的劃分矩陣%P:C XS型矩陣,FCM的聚類(lèi)中心,每一行對(duì)應(yīng)一個(gè)聚類(lèi)原型,聚類(lèi)中% Dist: C XN型矩陣,F(xiàn)CM各聚類(lèi)中心到各樣本點(diǎn)的距離%心i到樣本點(diǎn)j的距離為 Dist(i,j)%Cluster_Res:聚類(lèi)結(jié)果,共C行,每一行對(duì)應(yīng)一類(lèi)%Obj_
3、Fcn:目標(biāo)函數(shù)值%iter: FCM 算法迭代次數(shù)% See also: fuzzydist maxrowf fcmplotif nargin<5epsm=1.0e-6;end if nargin<4M=2;endif nargin<3plotflag=0;endN,S=size(Data);m=2/(M-1);iter=0;Dist(C,N)=0; U(C,N)=0; P(C,S)=0;%隨機(jī)初始化劃分矩陣U0 = ran d(C,N);U0=U0./(o nes(C,1)*sum(U0);% FCM的迭代算法while true%迭代計(jì)數(shù)器iter=iter+1;%計(jì)算
4、或更新聚類(lèi)中心PUm=U0.AM;P=Um*Data./(o nes(S,1)*sum(Um')'%更新劃分矩陣Ufor i=1:Cfor j=1:NDist(i,j)=fuzzydist(P(i,:),Data(j,:);endend%目標(biāo)函數(shù)值:類(lèi)內(nèi)加權(quán)平方誤差和if n argout>4 | plotflagend% FCM算法迭代停止條件if norm( U-U0,I nf)<epsmbreakendU0=U;end%聚類(lèi)結(jié)果if n argout > 3res = maxrowf(U);for c = 1:Cv = fin d(res=c);Clus
5、ter_Res(c,1:le ngth(v)=v; endend%繪圖if plotflagfcmplot(Data,U,P ,Obj_Fcn);endm文件2/7:fun ctio n U,P ,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm2(Data,PO,plotflag,M,epsm)%模糊C均值聚類(lèi)FCM:從指定初始聚類(lèi)中心開(kāi)始迭代% U,P ,Dist,Cluster_Res,Obj_Fcn,iter = fuzzycm2(Data,P0,plotflag,M,epsm)% 輸入:Data,plotflag,M,epsm:見(jiàn) fuzzycm.m%P0:
6、初始聚類(lèi)中心% 輸出:U,P,Dist,Cluster_Res,Obj_Fcn,iter:見(jiàn) fuzzycm.m% See also: fuzzycmif nargin<5epsm=1.0e-6;endif nargin<4M=2;endif nargin<3plotflag=0;endN,S = size(Data); m = 2/(M_1); iter = 0;C=size(P0,1);Dist(C,N)=0;U(C,N)=0;P(C,S)=0;% FCM的迭代算法 while true%迭代計(jì)數(shù)器iter=iter+1;%計(jì)算或更新劃分矩陣Ufor i=1:Cj,:);
7、for j=1:NDist(i,j)=fuzzydist(PO(i,:),Data(endendU=1./(Dist.Am.*(o nes(C,1)*sum(Dist.A(-m);%更新聚類(lèi)中心PUm=U.AM;P=Um*Data./(o nes(S,1)*sum(Um')'%目標(biāo)函數(shù)值:類(lèi)內(nèi)加權(quán)平方誤差和if n argout>4 | plotflagObj_Fcn(iter)=sum(sum(Um.*Dist.A2); end% FCM算法迭代停止條件if norm(P-P0,l nf)<epsmbreakendP0=P;end%聚類(lèi)結(jié)果if n argout
8、> 3res = maxrowf(U);for c = 1:Cv = fin d(res=c);Cluster_Res(c,1:le ngth(v)=v;endend%繪圖if plotflagfcmplot(Data,U,P ,Obj_Fcn);endm文件3/7:fun ctio n fcmplot(Data,U,P,Obj_Fcn)% FCM結(jié)果繪圖函數(shù)% See also: fuzzycm maxrowf ellipseC,S = size(P); res = maxrowf(U);str = 'po*x+d Av><.h:%目標(biāo)函數(shù)繪圖figure(1),p
9、lot(Obj_Fcn)title('目標(biāo)函數(shù)值變化曲線','fontsize',8)% 2D繪圖if S=2figure(2),plot(P(:,1),P(:,2),'rs'),hold onfor i=1:Cv=Data(fi nd(res=i),:); plot(v(:,1),v(:,2),str(rem(i,12)+1) ellipse(max(v(:,1)-mi n(v(:,1), .max(v(:,2)-mi n(v(:,2), .max(v(:,1)+mi n(v(:,1), .max(v(:,2)+mi n( v(:,2)/2,&
10、#39;r:')endgrid on,title('2D聚類(lèi)結(jié)果圖','fontsize',8),hold offend% 3D繪圖if S>2figure(2),plot3(P(:,1),P(:,2),P(:,3),'rs'),hold onfor i=1:Cv=Data(fi nd(res=i),:);plot3(v(:,1),v(:,2),v(:,3),str(rem(i,12)+1)ellipse(max(v(:,1)-mi n(v(:,1), .max(v(:,2)-mi n(v(:,2), .max(v(:,1)+mi
11、n(v(:,1), .max(v(:,2)+mi n(v(:,2)/2, .'r:',(max(v(:,3)+mi n(v(:,3)/2)endgrid on,title('3D聚類(lèi)結(jié)果圖','fontsize',8),hold offendm文件4/7:fun ctio n D=fuzzydist(A,B)%模糊聚類(lèi)分析:樣本間的距離% D = fuzzydist(A,B)D=n orm(A-B);m文件5/7:fun ctio n mr=maxrowf(U,c)%求矩陣U每列第c大元素所在行,c的缺省值為1% 調(diào)用格式:mr = maxrow
12、f(U,c)% See also: addrif nargin<2 c=1;endN=size(U,2);mr(1,N)=0;for j=1:Naj=addr(U(:,j),'desce nd');mr( j)=aj(c);endm文件6/7:function ellipse(a,b,ce nter,style,c_3d)%繪制一個(gè)橢圓% 調(diào)用:ellipse(a,b,center,style,c_3d)%輸入:%a:橢圓的軸長(zhǎng)(平行于x軸)% b:橢圓的軸長(zhǎng)(平行于y軸)%center:橢圓的中心xO,yO,缺省值為0,0%style:繪制的線型和顏色,缺省值為實(shí)線藍(lán)色
13、%c_3d:橢圓的中心在 3D空間中的z軸坐標(biāo),可缺省if nargin<4style='b:endif nargin<3 | isempty(ce nter)cen ter=O,O;endt=1:360;x=a/2*cosd(t)+ce nter(1);y=b/2*s in d(t)+ce nter(2);if nargin>4plot3(x,y,o nes(1,360)*c_3d,style)elseplot(x,y,style)endm文件7/7:function f = addr(a,strsort)%返回向量升序或降序排列后各分量在原始向量中的索引% 函數(shù)調(diào)
14、用:f = addr(a,strsort)% strsort: 'asce nd' or 'desce nd'%default is 'asce nd'%example% addr( 4 5 1 2 ) returns ans:% 3412 if nargin=1strsort='asce nd:endsa=sort(a); ca=a;la=le ngth(a);f(la)=O;for i=1:laf(i)=fi nd(ca=sa(i),1); ca(f(i)=NaN;endif strcmp(strsort,'desce nd&
15、#39;) f=fliplr(f);end幾天前我還在這里發(fā)帖求助,可是很幸運(yùn)在其他地方找到了,在這里和大家分享一下!fun cti on ce nter, U, obj_fcn = FCMCIust(data, cluster, n, opti ons)% FCMCIust.m采用模糊C均值對(duì)數(shù)據(jù)集data聚為cluster,n類(lèi)%用法:%1. ce nter,U,obj_fc n = FCMCIust(Data,N_cluster,optio ns);%2. ce nter,U,obj_fc n = FCMCIust(Data,N_cIuster);%輸入:%datanxm 矩陣,表示n個(gè)
16、樣本,每個(gè)樣本具有m的維特征值%N_cIuster -標(biāo)量,表示聚合中心數(shù)目,即類(lèi)別數(shù)%opti ons-4x1 矩陣,其中%opti on s(1):隸屬度矩陣U的指數(shù),1(缺省值:2.0)%opti on s(2):最大迭代次數(shù)(缺省值:100)%opti on s(3):隸屬度最小變化量,迭代終止條件(缺省值:1e-5)%opti on s(4):每次迭代是否輸出信息標(biāo)志(缺省值:1)%輸出:% cen ter- 聚類(lèi)中心% U- 隸屬度矩陣% obj_fc n-目標(biāo)函數(shù)值%Example:%data = ran d(100,2);%ce nter,U,obj_fc n = FCMCIu
17、st(data,2);%plot(data(:,1), data(:,2),'o');%hold on;%maxU = max(U);%in dexl = fin d(U(1,:) = maxU);%in dex2 = fin d(U(2,:) = maxU);%lin e(data(i ndex1,1),data( in dex1,2),'marker','*,'color','g');%lin e(data(i ndex2,1),data( in dex2,2),'marker','*,'
18、;color','r');%plot(ce nter(1 2,1),ce nter(1 2,2),'*','color','k')%hold off;if nargin = 2 & nargin = 3,%判斷輸入?yún)?shù)個(gè)數(shù)只能是2個(gè)或3個(gè)error('Too many or too few in put argume nts!');enddata_ n = size(data, 1); %求出data的第一維(rows)數(shù),即樣本個(gè)數(shù)in_n = size(data, 2);%求出data的第二維(
19、columns)數(shù),即特征值長(zhǎng)度%默認(rèn)操作參數(shù)default_optio ns = 2;%隸屬度矩陣U的指數(shù)100;%最大迭代次數(shù)1e-5;%隸屬度最小變化量,迭代終止條件1;%每次迭代是否輸出信息標(biāo)志if nargin = 2,opti ons = default_opti ons;else%分析有options做參數(shù)時(shí)候的情況%如果輸入?yún)?shù)個(gè)數(shù)是二那么就調(diào)用默認(rèn)的option;if length(options) < 4, % 如果用戶給的opition 數(shù)少于4個(gè)那么其他用 默認(rèn)值;tmp = default_opti ons;tmp(1:le ngth(opti on s) = opti ons;opti ons = tmp;end%返回options中是數(shù)的值為0(如NaN),不是數(shù)時(shí)為1nan_in dex = fin d(is nan( opti on s)=1);%將denfault_options中對(duì)應(yīng)位置的參數(shù)賦值給options中不是數(shù)的位置.opti ons(nan_in dex) = default_opti ons(nan_in dex);if optio ns<=1, %如果模糊矩陣的指數(shù)小于等于1error('T
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目進(jìn)度管理月度工作總結(jié)報(bào)告
- 健康體檢機(jī)構(gòu)資質(zhì)排名表
- 2025年小蝌蚪找媽媽?zhuān)阂环莞挥袆?chuàng)意的教案
- 企業(yè)合同管理與企業(yè)治理作業(yè)指導(dǎo)書(shū)
- 項(xiàng)目推進(jìn)時(shí)間表及工作計(jì)劃
- 拓展詞匯天地-六年級(jí)英語(yǔ)不規(guī)則動(dòng)詞過(guò)去式教案
- 建筑外架工程合同
- 筆譯服務(wù)合同
- 電力行業(yè)電力調(diào)度及管理信息一體化系統(tǒng)
- 保安服務(wù)協(xié)議書(shū)年
- 防范游戲充值詐騙保護(hù)個(gè)人游戲賬號(hào)安全
- 數(shù)學(xué)與體育融合課程設(shè)計(jì)
- 七年級(jí)英語(yǔ)閱讀理解專(zhuān)項(xiàng)訓(xùn)練(含答案)共20篇
- 初步設(shè)計(jì)法律規(guī)范
- 社區(qū)獲得性肺炎疾病查房
- 神奇的光:如何形成彩虹
- 三、膽石癥課件
- 兔子坡(閱讀課上課課件)
- 固定資產(chǎn)清查盤(pán)點(diǎn)明細(xì)表
- 220kV升壓站調(diào)試施工方案
- 立式單軸木工銑床安全操作規(guī)程
評(píng)論
0/150
提交評(píng)論