




已閱讀5頁,還剩4頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
模糊c均值聚類 FCM算法的MATLAB代碼 我做畢業論文時需要模糊C-均值聚類,找了好長時間才找到這個,分享給大家:FCM算法的兩種迭代形式的MATLAB代碼寫于下,也許有的同學會用得著:m文件1/7:function U,P,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm(Data,C,plotflag,M,epsm)% 模糊 C 均值聚類 FCM: 從隨機初始化劃分矩陣開始迭代% U,P,Dist,Cluster_Res,Obj_Fcn,iter = fuzzycm(Data,C,plotflag,M,epsm)% 輸入:% Data: NS 型矩陣,聚類的原始數據,即一組有限的觀測樣本集,% Data 的每一行為一個觀測樣本的特征矢量,S 為特征矢量% 的維數,N 為樣本點的個數% C: 聚類數,1CN% plotflag: 聚類結果 2D/3D 繪圖標記,0 表示不繪圖,為缺省值 % M: 加權指數,缺省值為 2% epsm: FCM 算法的迭代停止閾值,缺省值為 1.0e-6% 輸出:% U: CN 型矩陣,FCM 的劃分矩陣% P: CS 型矩陣,FCM 的聚類中心,每一行對應一個聚類原型% Dist: CN 型矩陣,FCM 各聚類中心到各樣本點的距離,聚類中% 心 i 到樣本點 j 的距離為 Dist(i,j)% Cluster_Res: 聚類結果,共 C 行,每一行對應一類% Obj_Fcn: 目標函數值% iter: FCM 算法迭代次數% See also: fuzzydist maxrowf fcmplotif nargin5 epsm=1.0e-6; endif nargin4 M=2;endif nargin4 | plotflag Obj_Fcn(iter)=sum(sum(Um.*Dist.2); end % FCM 算法迭代停止條件 if norm(U-U0,Inf) 3 res = maxrowf(U); for c = 1:C v = 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,epsm)% 模糊 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 nargin5 epsm=1.0e-6; endif nargin4 M=2;endif nargin4 | plotflag Obj_Fcn(iter)=sum(sum(Um.*Dist.2); end % FCM 算法迭代停止條件 if norm(P-P0,Inf) 3 res = maxrowf(U); for c = 1:C v = find(res=c); Cluster_Res(c,1:length(v)=v; endend% 繪圖if plotflag fcmplot(Data,U,P,Obj_Fcn);endm文件3/7:function fcmplot(Data,U,P,Obj_Fcn)% FCM 結果繪圖函數% See also: fuzzycm maxrowf ellipseC,S = size(P); res = maxrowf(U);str = po*x+dv2 figure(2),plot3(P(:,1),P(:,2),P(:,3),rs),hold on for i=1:C v=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) end grid on,title(3D 聚類結果圖,fontsize,8),hold 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% 調用格式: mr = maxrowf(U,c)% See also: addrif nargin2 c=1;endN=size(U,2);mr(1,N)=0;for j=1:N aj=addr(U(:,j),descend); mr(j)=aj(c);endm文件6/7:function ellipse(a,b,center,style,c_3d)% 繪制一個橢圓% 調用: ellipse(a,b,center,style,c_3d)% 輸入:% a: 橢圓的軸長(平行于 x 軸)% b: 橢圓的軸長(平行于 y 軸)% center: 橢圓的中心 x0,y0,缺省值為 0,0% style: 繪制的線型和顏色,缺省值為實線藍色% c_3d: 橢圓的中心在 3D 空間中的 z 軸坐標,可缺省if nargin4 style=b;endif nargin4 plot3(x,y,ones(1,360)*c_3d,style)else plot(x,y,style)endm文件7/7:function f = addr(a,strsort)% 返回向量升序或降序排列后各分量在原始向量中的索引% 函數調用:f = addr(a,strsort)% strsort: ascend or descend% default is ascend% - 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:la f(i)=find(ca=sa(i),1); ca(f(i)=NaN;endif strcmp(strsort,descend) f=fliplr(f);end幾天前我還在這里發帖求助,可是很幸運在其他地方找到了,在這里和大家分享一下!function center, U, obj_fcn = FCMClust(data, cluster_n, options) % FCMClust.m 采用模糊C均值對數據集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個樣本,每個樣本具有m的維特征值 % N_cluster - 標量,表示聚合中心數目,即類別數 % options - 4x1矩陣,其中 % options(1):隸屬度矩陣U的指數,1 (缺省值: 2.0) % options(2):最大迭代次數 (缺省值: 100) % options(3):隸屬度最小變化量,迭代終止條件 (缺省值: 1e-5) % options(4):每次迭代是否輸出信息標志 (缺省值: 1) % 輸出: % center - 聚類中心 % U - 隸屬度矩陣 % obj_fcn - 目標函數值 % Example: % data = rand(100,2); % center,U,obj_fcn = FCMClust(data,2); % plot(data(:,1), data(:,2),o); % hold 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),*,color,k) % hold off; if nargin = 2 & nargin = 3, %判斷輸入參數個數只能是2個或3個 error(Too many or too few input arguments!); end data_n = size(data, 1); % 求出data的第一維(rows)數,即樣本個數 in_n = size(data, 2); % 求出data的第二維(columns)數,即特征值長度 % 默認操作參數 default_options = 2; % 隸屬度矩陣U的指數 100; % 最大迭代次數 1e-5; % 隸屬度最小變化量,迭代終止條件 1; % 每次迭代是否輸出信息標志if nargin = 2, options = default_options; else %分析有options做參數時候的情況 % 如果輸入參數個數是二那么就調用默認的option; if length(options) 4, %如果用戶給的opition數少于4個那么其他用默認值; tmp = default_options; tmp(1:length(options) = options; options = tmp; end % 返回options中是數的值為0(如NaN),不是數時為1 nan_index = find(isnan(options
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公共管理碩士入學考試試題及答案分享
- 2025年物業管理師職業資格考試模擬題及答案
- 2025年藝術設計專業畢業論文答辯試題及答案
- 2025年政策風險管理與評估考試試題及答案
- 色彩漸變色設計原理與應用
- 2025財務人員勞動合同
- 2025中學教職工聘任合同范本
- 影視藝人簽約協議書
- 房屋地基下沉協議書
- 氣囊封堵合同協議書
- 封隔器加工合同協議
- 《大學生職業生涯規劃與就業指導(實踐版)》全套教學課件
- 建筑企業財務管理的風險控制與應對策略
- 抗生素合理使用研究試題及答案
- 批評不可怕課件
- 智能建造基礎考試題及答案
- 通信工程項目管理流程
- 《智能優化算法解析》 課件 第1-3章-緒論、基于進化規律的智能優化算法、基于物理原理的智能優化算法
- 具身智能項目建議書(參考)
- AI系列培訓課件-人工智能技術及應用課件第1章
- 云南省昆明市盤龍區2024-2025學年八年級上學期期末質量監測英語試題(含答案)
評論
0/150
提交評論