📄 initkm2.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of initkm2</title> <meta name="keywords" content="initkm2"> <meta name="description" content="INITKM2 Find the initial centers for a K-means clustering algorithm."> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">dcpr</a> > initkm2.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for dcpr <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>initkm2</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>INITKM2 Find the initial centers for a K-means clustering algorithm.</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function center_index = initkm2(distmat, cluster_n, method) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> INITKM2 Find the initial centers for a K-means clustering algorithm.
This function is used in kmeans2.m.</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="vecdist.html" class="code" title="function distmat = vecdist(mat1, mat2)">vecdist</a> VECDIST Distance between two set of vectors</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="kmeans2.html" class="code" title="function [center_index, U, obj_fcn] = kmeans2(distmat, cluster_n, options)">kmeans2</a> KMEANS Find clusters with Forgy's batch-mode k-means clustering.</li></ul><!-- crossreference --><h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><ul style="list-style-image:url(../matlabicon.gif)"><li><a href="#_sub1" class="code">function selfdemo</a></li></ul><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function center_index = initkm2(distmat, cluster_n, method)</a>0002 <span class="comment">% INITKM2 Find the initial centers for a K-means clustering algorithm.</span>0003 <span class="comment">% This function is used in kmeans2.m.</span>0004 0005 <span class="comment">% Roger Jang, 20000206</span>0006 0007 <span class="keyword">if</span> nargin==0, <a href="#_sub1" class="code" title="subfunction selfdemo">selfdemo</a>; <span class="keyword">return</span>; <span class="keyword">end</span>0008 0009 <span class="keyword">switch</span> method0010 <span class="keyword">case</span> 10011 <span class="comment">% ====== Method 1: Randomly pick cluster_n data points as cluster centers</span>0012 data_n = size(distmat, 1);0013 tmp = randperm(data_n);0014 center_index = tmp(1:cluster_n);0015 0016 <span class="keyword">case</span> 20017 <span class="comment">% ====== Method 2: Choose cluster_n data points closest to the mean vector</span>0018 [junk, mean_index] = min(sum(distmat));0019 [a,b] = sort(distmat(mean_index, :));0020 center_index = b(1:cluster_n);0021 0022 <span class="keyword">case</span> 30023 <span class="comment">% ====== Method 3: Choose cluster_n data points furthest to the mean vector</span>0024 [junk, mean_index] = min(sum(distmat));0025 [a,b] = sort(distmat(mean_index, :));0026 b = fliplr(b);0027 center_index = b(1:cluster_n);0028 0029 <span class="keyword">otherwise</span>0030 disp([<span class="string">'Unknown method in '</span>, mfilename, <span class="string">'!'</span>]);0031 0032 <span class="keyword">end</span>0033 0034 <a name="_sub1" href="#_subfunctions" class="code">function selfdemo</a>0035 data_n = 100;0036 data1 = ones(data_n, 1)*[0 0] + randn(data_n, 2)/5;0037 data2 = ones(data_n, 1)*[0 1] + randn(data_n, 2)/5;0038 data3 = ones(data_n, 1)*[1 0] + randn(data_n, 2)/5;0039 data = [data1; data2; data3];0040 distmat = <a href="vecdist.html" class="code" title="function distmat = vecdist(mat1, mat2)">vecdist</a>(data);0041 cluster_n = 10;0042 0043 method = 1;0044 center_index = feval(mfilename, distmat, cluster_n, method);0045 subplot(2,2,1);0046 plot(data(:, 1), data(:, 2), <span class="string">'o'</span>);0047 <span class="keyword">for</span> i = 1:cluster_n,0048 line(data(center_index(i), 1), data(center_index(i), 2), <span class="keyword">...</span>0049 <span class="string">'linestyle'</span>, <span class="string">'none'</span>, <span class="string">'marker'</span>, <span class="string">'*'</span>, <span class="string">'color'</span>, <span class="string">'r'</span>);0050 <span class="keyword">end</span>0051 axis equal;0052 title(<span class="string">'Random method'</span>);0053 0054 method = 2;0055 center_index = feval(mfilename, distmat, cluster_n, method);0056 subplot(2,2,2);0057 plot(data(:, 1), data(:, 2), <span class="string">'o'</span>);0058 <span class="keyword">for</span> i = 1:cluster_n,0059 line(data(center_index(i), 1), data(center_index(i), 2), <span class="keyword">...</span>0060 <span class="string">'linestyle'</span>, <span class="string">'none'</span>, <span class="string">'marker'</span>, <span class="string">'*'</span>, <span class="string">'color'</span>, <span class="string">'r'</span>);0061 <span class="keyword">end</span>0062 axis equal;0063 title(<span class="string">'Centers nearest to the mean'</span>);0064 0065 method = 3;0066 center_index = feval(mfilename, distmat, cluster_n, method);0067 subplot(2,2,3);0068 plot(data(:, 1), data(:, 2), <span class="string">'o'</span>);0069 <span class="keyword">for</span> i = 1:cluster_n,0070 line(data(center_index(i), 1), data(center_index(i), 2), <span class="keyword">...</span>0071 <span class="string">'linestyle'</span>, <span class="string">'none'</span>, <span class="string">'marker'</span>, <span class="string">'*'</span>, <span class="string">'color'</span>, <span class="string">'r'</span>);0072 <span class="keyword">end</span>0073 axis equal;0074 title(<span class="string">'Centers farthest to the mean'</span>);0075</pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -