📄 cmeans.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>cmeans.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>[model,y] </span>= <span class=defun_name>cmeans</span>(<span class=defun_in>X,num_centers,Init_centers</span>)<br><span class=h1>% CMEANS K-means clustering algorithm.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% [model,y] = cmeans(X,num_centers)</span><br><span class=help>% [model,y] = cmeans(X,num_centers,Init_centers)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% [model,y] = cmeans(X,num_centers) runs C-means clustering </span><br><span class=help>% where inital centers are randomly selected from the </span><br><span class=help>% input vectors X. The output are found centers stored in </span><br><span class=help>% structure model.</span><br><span class=help>% </span><br><span class=help>% [model,y] = cmeans(X,num_centers,Init_centers) uses</span><br><span class=help>% init_centers as the starting point.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% X [dim x num_data] Input vectors.</span><br><span class=help>% num_centers [1x1] Number of centers.</span><br><span class=help>% Init_centers [1x1] Starting point of the algorithm.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% model [struct] Found clustering:</span><br><span class=help>% .X [dim x num_centers] Found centers.</span><br><span class=help>%</span><br><span class=help>% .y [1 x num_centers] Implicitly added labels 1..num_centers.</span><br><span class=help>% .t [1x1] Number of iterations.</span><br><span class=help>% .MsErr [1xt] Mean-Square error at each iteration.</span><br><span class=help>%</span><br><span class=help>% y [1 x num_data] Labels assigned to data according to </span><br><span class=help>% the nearest center.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% data = load('riply_trn');</span><br><span class=help>% [model,data.y] = cmeans( data.X, 4 );</span><br><span class=help>% figure; ppatterns(data); </span><br><span class=help>% ppatterns(model,12); pboundary( model );</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% EMGMM, KNNCLASS.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>(c)</span> Statistical Pattern Recognition Toolbox, (C) 1999-2003,</span><br><span class=help1>% Written by Vojtech Franc and Vaclav Hlavac,</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a>,</span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical engineering</a>,</span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 17-jun-2007, VF, renamed from kmeans to cmeans to avoid conflicts with stats toolbox</span><br><span class=help1>% 12-may-2004, VF</span><br><br><hr>[dim,num_data] = size(X);<br><br><span class=comment>% random inicialization of class centers</span><br><span class=comment>%-----------------------------------------------</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 3,<br> inx=randperm(num_data);<br> model.X = X(:,inx(1:num_centers));<br> model.y = 1:num_centers;<br> model.K = 1;<br><span class=keyword>end</span><br><br>model.fun = <span class=quotes>'knnclass'</span>;<br><br>old_y = zeros(1,num_data);<br>t = 0;<br><br><span class=comment>% main loop</span><br><span class=comment>%-------------------------</span><br><span class=keyword>while</span> 1,<br> <br> t = t+1;<br> <br> <span class=comment>% classificitation</span><br> y = knnclass( X, model );<br> <br> <span class=comment>% computation of class centers</span><br> err = 0;<br> <span class=keyword>for</span> i=1:num_centers,<br> inx = find(y == i);<br><br> <span class=keyword>if</span> ~isempty(inx),<br> <br> <span class=comment>% compute approximation error</span><br> err = err + sum(sum((X(:,inx) - model.X(:,i)*ones(1,length(inx)) ).^2));<br> <br> <span class=comment>% compute new centers</span><br> model.X(:,i) = sum(X(:,inx),2)/length(inx);<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br><br> <span class=comment>% Number of iterations and Mean-Square Error </span><br> model.t = t;<br> model.MsErr(t) = err/num_data;<br> <br> <span class=keyword>if</span> sum( abs(y - old_y) ) == 0,<br> <span class=jump>return</span>;<br> <span class=keyword>end</span><br><br> old_y = y;<br><span class=keyword>end</span><br><br><span class=jump>return</span>;<br><span class=comment>% EOF</span><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -