


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、模糊 c 均值聚類 FCM 算法的 MATLAB 代碼我做畢業(yè)論文時(shí)需要模糊C-均值聚類,找了好長時(shí)間才找到這個(gè),分享給大家:FCM 算法的兩種迭代形式的 MA TLAB 代碼寫于下 ,也許有的同學(xué)會用得著 m 文件 1/7:function U,P,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm(Data,C,plotflag,M,epsm) % 模糊 C 均值聚類 FCM: 從隨機(jī)初始化劃分矩陣開始迭代% U,P,Dist,Cluster_Res,Obj_Fcn,iter = fuzzycm(Data,C,plotflag,M,epsm)% 輸入 :% Data
2、: N x S型矩陣,聚類的原始數(shù)據(jù),即一組有限的觀測樣本集 ,%Data 的每一行為一個(gè)觀測樣本的特征矢量,S 為特征矢量%的維數(shù) ,N 為樣本點(diǎn)的個(gè)數(shù)%C:聚類數(shù) ,1<C<N% plotflag: 聚類結(jié)果 2D/3D 繪圖標(biāo)記 ,0 表示不繪圖 ,為缺省值%M:加權(quán)指數(shù) , 缺省值為 2% epsm: FCM 算法的迭代停止閾值 ,缺省值為 1.0e-6% 輸出 :%U:Cx N 型矩陣 ,F(xiàn)CM 的劃分矩陣%P:Cx S 型矩陣 ,F(xiàn)CM 的聚類中心 ,每一行對應(yīng)一個(gè)聚類原型% Dist: Cx N 型矩陣 ,F(xiàn)CM 各聚類中心到各樣本點(diǎn)的距離,聚類中%心 i 到樣本點(diǎn)
3、j 的距離為 Dist(i,j)%Cluster_Res: 聚類結(jié)果 ,共C行,每一行對應(yīng)一類%Obj_Fcn: 目標(biāo)函數(shù)值%iter: FCM 算法迭代次數(shù)% See also: fuzzydist maxrowf fcmplot if nargin<5epsm=1.0e-6;end if nargin<4M=2;end if nargin<3plotflag=0;end N,S=size(Data);m=2/(M-1);iter=0;Dist(C,N)=0; U(C,N)=0; P(C,S)=0;% 隨機(jī)初始化劃分矩陣U0 = rand(C,N);U0=U0./(ones
4、(C,1)*sum(U0); % FCM 的迭代算法while true% 迭代計(jì)數(shù)器 iter=iter+1;% 計(jì)算或更新聚類中心 PUm=U0.AM;P=Um*Data./(ones(S,1)*sum(Um')'% 更新劃分矩陣 Ufor i=1:Cfor j=1:N Dist(i,j)=fuzzydist(P(i,:),Data(j,:);endend U=1./(Dist.Am.*(ones(C,1)*sum(Dist.A(-m);% 目標(biāo)函數(shù)值 : 類內(nèi)加權(quán)平方誤差和if nargout>4 | plotflag Obj_Fcn(iter)=sum(sum(U
5、m.*Dist.A2);end% FCM 算法迭代停止條件if norm(U-U0,Inf)<epsm breakendU0=U;end% 聚類結(jié)果if nargout > 3res = maxrowf(U);for c = 1:Cv = find(res=c); Cluster_Res(c,1:length(v)=v;endend% 繪圖if plotflag fcmplot(Data,U,P,Obj_Fcn);endm 文件 2/7:function U,P,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm2(Data,P0,plotflag,M,ep
6、sm) % 模糊 C 均值聚類 FCM: 從指定初始聚類中心開始迭代% U,P,Dist,Cluster_Res,Obj_Fcn,iter = fuzzycm2(Data,P0,plotflag,M,epsm)% 輸入 : Data,plotflag,M,epsm: 見 fuzzycm.m% P0: 初始聚類中心% 輸出 : U,P,Dist,Cluster_Res,Obj_Fcn,iter: 見 fuzzycm.m% See also: fuzzycmif nargin<5epsm=1.0e-6;endif nargin<4M=2;endif nargin<3plotfla
7、g=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ì)算或更新劃分矩陣 U for i=1:Cfor j=1:NDist(i,j)=fuzzydist(P0(i,:),Data(j,:); end endU=1./(Dist4m.*(o nes(C,1)*sum(Dist.A(-m); % 更新聚類中心 PUm=U.AM;P=Um*Data./(ones(S,1)*sum(Um'
8、;)'% 目標(biāo)函數(shù)值 : 類內(nèi)加權(quán)平方誤差和 if nargout>4 | plotflagObj_Fcn(iter)=sum(sum(Um.*Dist.A2); end% FCM 算法迭代停止條件if norm(P-P0,Inf)<epsmbreakendP0=P;end% 聚類結(jié)果if nargout > 3res = maxrowf(U);for c = 1:Cv = find(res=c);Cluster_Res(c,1:length(v)=v;endend% 繪圖if plotflagfcmplot(Data,U,P,Obj_Fcn);endm 文件 3/7
9、:function 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),plot(Obj_Fcn)title(' 目標(biāo)函數(shù)值變化曲線 ','fontsize',8)% 2D 繪圖if S=2figure(2),plot(P(:,1),P(:,2),'rs'),hold onfor i=1:Cv=D
10、ata(find(res=i),:);plot(v(:,1),v(:,2),str(rem(i,12)+1)ellipse(max(v(:,1)-min(v(:,1), .max(v(:,2)-min(v(:,2), .max(v(:,1)+min(v(:,1), . max(v(:,2)+min(v(:,2)/2,'r:') endgrid on,title('2D 聚類結(jié)果圖 ','fontsize',8),hold off end% 3D 繪圖if S>2 figure(2),plot3(P(:,1),P(:,2),P(:,3),
11、39;rs'),hold on for i=1:Cv=Data(find(res=i),:); plot3(v(:,1),v(:,2),v(:,3),str(rem(i,12)+1) ellipse(max(v(:,1)-min(v(:,1), .max(v(:,2)-min(v(:,2), .max(v(:,1)+min(v(:,1), .max(v(:,2)+min(v(:,2)/2, .'r:',(max(v(:,3)+min(v(:,3)/2)endgrid on,title('3D 聚類結(jié)果圖 ','fontsize',8),h
12、old offendm 文件 4/7:function D=fuzzydist(A,B)% 模糊聚類分析 : 樣本間的距離% D = fuzzydist(A,B)D=norm(A-B);m 文件 5/7:function mr=maxrowf(U,c)% 求矩陣 U 每列第 c 大元素所在行 ,c 的缺省值為 1% 調(diào)用格式 : mr = maxrowf(U,c)% See also: addrif nargin<2c=1;endN=size(U,2);mr(1,N)=0;for j=1:Naj=addr(U(:,j),'descend');mr(j)=aj(c);end
13、m 文件 6/7:function ellipse(a,b,center,style,c_3d)% 繪制一個(gè)橢圓% 調(diào)用 : ellipse(a,b,center,style,c_3d)% 輸入 :%a: 橢圓的軸長 (平行于 x 軸 )%b: 橢圓的軸長 (平行于 y 軸 )%center: 橢圓的中心 x0,y0, 缺省值為 0,0%style: 繪制的線型和顏色 , 缺省值為實(shí)線藍(lán)色% c_3d: 橢圓的中心在 3D 空間中的 z 軸坐標(biāo) , 可缺省 if nargin<4style='b'endif nargin<3 | isempty(center)cen
14、ter=0,0;endt=1:360;x=a/2*cosd(t)+center(1); y=b/2*sind(t)+center(2);if nargin>4plot3(x,y,ones(1,360)*c_3d,style)elseplot(x,y,style)endm 文件 7/7:function f = addr(a,strsort)% 返回向量升序或降序排列后各分量在原始向量中的索引% 函數(shù)調(diào)用 :f = addr(a,strsort)% strsort: 'ascend' or 'descend'% default is 'ascend&
15、#39;% example % addr( 4 5 1 2 ) returns ans:% 3 4 1 2 if nargin=1 strsort='ascend'endsa=sort(a); ca=a; la=length(a);f(la)=0;for i=1:laf(i)=find(ca=sa(i),1); ca(f(i)=NaN;endif strcmp(strsort,'descend') f=fliplr(f);end幾天前我還在這里發(fā)帖求助, 可是很幸運(yùn)在其他地方找到了, 在這里和大家分享 一下!function center, U, obj_fcn
16、 = FCMClust(data, cluster_n, options)% FCMClust.m 采用模糊 C 均值對數(shù)據(jù)集 data 聚為 cluster_n 類% 用法:%1.center,U,obj_fcn = FCMClust(Data,N_cluster,options);%2.center,U,obj_fcn = FCMClust(Data,N_cluster);% 輸入:% data- nxm 矩陣,表示n個(gè)樣本,每個(gè)樣本具有m的維特征值% N_cluster 標(biāo)量 , 表示聚合中心數(shù)目 , 即類別數(shù)%options 4x1矩陣,其中%options(1):隸 屬 度 矩 陣U
17、 的 指數(shù), >1( 缺省值 : 2.0)%options(2):最大迭代次數(shù)( 缺省值 : 100)%options(3):隸 屬 度 最 小 變 化 量 , 迭 代 終 止 條件( 缺省值 :1e-5)%options(4):每 次 迭 代 是 否 輸 出 信 息 標(biāo)志 ( 缺省值: 1)% 輸出:%center 聚類中心% U 隸屬度矩陣%obj_fcn 目標(biāo)函數(shù)值%Example:%data = rand(100,2);%center,U,obj_fcn = FCMClust(data,2);%plot(data(:,1), data(:,2),'o');%hol
18、d on;%maxU = max(U);%index1 = find(U(1,:) =maxU);%index2 = find(U(2,:) =maxU);%line(data(index1,1),data(index1,2),'marker','*','color','g');%line(data(index2,1),data(index2,2),'marker','*','color','r');%plot(center(1 2,1),center(1 2,2),
19、'*','color','k')%hold off;if nargin = 2 & nargin = 3,%判斷輸入?yún)?shù)個(gè)數(shù)只能是 2 個(gè)或 3個(gè)error('Too many or too few input arguments!');enddata_n = size(data, 1); % in_n = size(data, 2); % 默認(rèn)操作參數(shù) default_options = 2;100;1e-5;1;求出 data 的第一維 (rows) 數(shù), 即樣本個(gè)數(shù)% 求出 data 的第二維 (columns) 數(shù)
20、,即特征值長度%隸屬度矩陣U的指數(shù)% 最大迭代次數(shù)% 隸屬度最小變化量 , 迭代終止條件% 每次迭代是否輸出信息標(biāo)志if nargin = 2,options = default_options;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_options;tmp(1:length(options) = options; options = tmp;end% 返回 options 中是數(shù)的值為 0( 如 NaN), 不是數(shù)時(shí)為 1nan_index = find(isnan(options)=1);%將 denfault_options 中對應(yīng)位置的參數(shù)賦值給 options 中不是數(shù)的位置 options(nan_index) = default_options(nan_index);if options(1) <= 1, % 如果模糊矩陣的指數(shù)小于等于 1 error('The expon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑器材購銷合同范本
- 水環(huán)真空泵市場分析及競爭策略分析報(bào)告
- 醫(yī)院居間合同范本
- 招標(biāo)公司服務(wù)合同范本
- 南京耐磨地坪合同范本
- 叉車代理銷售合同范本
- 個(gè)人房屋轉(zhuǎn)讓協(xié)議書
- 1+X繼保試題含參考答案
- 與個(gè)人搬運(yùn)合同范本
- 辦公改造合同范本
- 中國無人機(jī)市場分析
- 2025高考數(shù)學(xué)專項(xiàng)復(fù)習(xí):圓中鬼魅阿波羅尼斯圓(含答案)
- 2024年新課標(biāo)培訓(xùn)2022年小學(xué)英語新課標(biāo)學(xué)習(xí)培訓(xùn)課件
- 中學(xué)八年級信息技術(shù)Excel-電子表格教案
- 哲學(xué)與人生 第二課 樹立科學(xué)的世界觀2.1
- 巖石破碎型泥水平衡頂管施工工法
- 人教A版(2019)高中數(shù)學(xué)選擇性必修第二冊 《數(shù)列的相關(guān)概念》教學(xué)設(shè)計(jì)
- 醫(yī)療信息共享與互聯(lián)網(wǎng)醫(yī)療管理制度
- 2024新版有限空間作業(yè)安全大培訓(xùn)
- 九年級語文下冊-【《孔乙己》課后習(xí)題參考答案】
- 人教版高中英語必修二詞匯表(默寫版)
評論
0/150
提交評論