Documentation for c26eea874d

This commit is contained in:
realstealthninja
2025-05-19 11:38:33 +00:00
parent c7a9a42397
commit 14583a2f33
2829 changed files with 30266 additions and 21669 deletions

View File

@@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: machine_learning/kohonen_som_trace.cpp File Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
@@ -60,7 +60,7 @@ window.MathJax = {
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -180,6 +180,8 @@ Functions</h2></td></tr>
<tr class="separator:a2256c10b16edba377b64a44b6c656908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627" id="r_a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
<tr class="separator:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a042f435bca0839e721fc1574a61e8da3" id="r_a042f435bca0839e721fc1574a61e8da3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a> (const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X, std::vector&lt; std::valarray&lt; double &gt; &gt; *W, double alpha_min)</td></tr>
<tr class="separator:a042f435bca0839e721fc1574a61e8da3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Self-organizing_map" target="_blank">Kohonen self organizing map</a> (data tracing) </p>
@@ -227,6 +229,70 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
</div><!-- fragment -->
</div>
</div>
<a id="a042f435bca0839e721fc1574a61e8da3" name="a042f435bca0839e721fc1574a61e8da3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a042f435bca0839e721fc1574a61e8da3">&#9670;&#160;</a></span>kohonen_som_tracer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void machine_learning::kohonen_som_tracer </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>X</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::valarray&lt; double &gt; &gt; *</td> <td class="paramname"><span class="paramname"><em>W</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>alpha_min</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply incremental algorithm with updating neighborhood and learning rates on all samples in the given datset.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>data set </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">W</td><td>weights matrix </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">alpha_min</td><td>terminal value of alpha </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00149">149</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 151</span> {</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordtype">int</span> num_samples = X.size(); <span class="comment">// number of rows</span></div>
<div class="line"><span class="lineno"> 153</span> <span class="comment">// int num_features = X[0].size(); // number of columns</span></div>
<div class="line"><span class="lineno"> 154</span> <span class="keywordtype">int</span> num_out = W-&gt;size(); <span class="comment">// number of rows</span></div>
<div class="line"><span class="lineno"> 155</span> <span class="keywordtype">int</span> R = num_out &gt;&gt; 2, iter = 0;</div>
<div class="line"><span class="lineno"> 156</span> <span class="keywordtype">double</span> alpha = 1.f;</div>
<div class="line"><span class="lineno"> 157</span> </div>
<div class="line"><span class="lineno"> 158</span> std::valarray&lt;double&gt; D(num_out);</div>
<div class="line"><span class="lineno"> 159</span> </div>
<div class="line"><span class="lineno"> 160</span> <span class="comment">// Loop alpha from 1 to slpha_min</span></div>
<div class="line"><span class="lineno"> 161</span> <span class="keywordflow">do</span> {</div>
<div class="line"><span class="lineno"> 162</span> <span class="comment">// Loop for each sample pattern in the data set</span></div>
<div class="line"><span class="lineno"> 163</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> sample = 0; sample &lt; num_samples; sample++) {</div>
<div class="line"><span class="lineno"> 164</span> <span class="comment">// update weights for the current input pattern sample</span></div>
<div class="line"><span class="lineno"> 165</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">update_weights</a>(X[sample], W, &amp;D, alpha, R);</div>
<div class="line"><span class="lineno"> 166</span> }</div>
<div class="line"><span class="lineno"> 167</span> </div>
<div class="line"><span class="lineno"> 168</span> <span class="comment">// every 10th iteration, reduce the neighborhood range</span></div>
<div class="line"><span class="lineno"> 169</span> <span class="keywordflow">if</span> (iter % 10 == 0 &amp;&amp; R &gt; 1) {</div>
<div class="line"><span class="lineno"> 170</span> R--;</div>
<div class="line"><span class="lineno"> 171</span> }</div>
<div class="line"><span class="lineno"> 172</span> </div>
<div class="line"><span class="lineno"> 173</span> alpha -= 0.01;</div>
<div class="line"><span class="lineno"> 174</span> iter++;</div>
<div class="line"><span class="lineno"> 175</span> } <span class="keywordflow">while</span> (alpha &gt; alpha_min);</div>
<div class="line"><span class="lineno"> 176</span>}</div>
<div class="ttc" id="anamespacemachine__learning_html_ae868ad43698a1d69ba46ea3827d7d2c3"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">machine_learning::update_weights</a></div><div class="ttdeci">double update_weights(const std::valarray&lt; double &gt; &amp;X, std::vector&lt; std::vector&lt; std::valarray&lt; double &gt; &gt; &gt; *W, std::vector&lt; std::valarray&lt; double &gt; &gt; *D, double alpha, int R)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00200">kohonen_som_topology.cpp:200</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3c04138a5bfe5d72780bb7e82a18e627" name="a3c04138a5bfe5d72780bb7e82a18e627"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&#160;</a></span>main()</h2>
@@ -315,7 +381,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00233">233</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 233</span> {</div>
<div class="line"><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 500;</div>
<div class="line"><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
<div class="line"><span class="lineno"> 235</span> <span class="keywordtype">int</span> features = 2;</div>
<div class="line"><span class="lineno"> 236</span> <span class="keywordtype">int</span> num_out = 50;</div>
<div class="line"><span class="lineno"> 237</span> std::vector&lt;std::valarray&lt;double&gt;&gt; X(N);</div>
@@ -341,13 +407,13 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<div class="line"><span class="lineno"> 257</span> <a class="code hl_function" href="#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(&amp;X); <span class="comment">// create test data around circumference of a circle</span></div>
<div class="line"><span class="lineno"> 258</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test1.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><span class="lineno"> 259</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w11.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><span class="lineno"> 260</span> kohonen_som_tracer(X, &amp;W, 0.1); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 260</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.1); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 261</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w12.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><span class="lineno"> 262</span>}</div>
<div class="ttc" id="agroup__machine__learning_html_gae0208548f8b393528e5db01717e88e67"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a></div><div class="ttdeci">int save_nd_data(const char *fname, const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00058">kohonen_som_trace.cpp:58</a></div></div>
<div class="ttc" id="agroup__machine__learning_html_gaf5ce14f026d6d231bef29161bac2b485"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a></div><div class="ttdeci">double _random(double a, double b)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00053">kohonen_som_topology.cpp:53</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a042f435bca0839e721fc1574a61e8da3"><div class="ttname"><a href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a></div><div class="ttdeci">void kohonen_som_tracer(const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X, std::vector&lt; std::valarray&lt; double &gt; &gt; *W, double alpha_min)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00149">kohonen_som_trace.cpp:149</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_ae571600aa42a81bc14a4a602ea5ff00d"><div class="ttname"><a href="#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a></div><div class="ttdeci">void test_circle(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00196">kohonen_som_trace.cpp:196</a></div></div>
<div class="ttc" id="asparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition</b> <a href="../../d8/dab/sparse__table_8cpp_source.html#l00048">sparse_table.cpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -379,7 +445,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00315">315</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 315</span> {</div>
<div class="line"><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 500;</div>
<div class="line"><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
<div class="line"><span class="lineno"> 317</span> <span class="keywordtype">int</span> features = 2;</div>
<div class="line"><span class="lineno"> 318</span> <span class="keywordtype">int</span> num_out = 20;</div>
<div class="line"><span class="lineno"> 319</span> std::vector&lt;std::valarray&lt;double&gt;&gt; X(N);</div>
@@ -405,7 +471,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<div class="line"><span class="lineno"> 339</span> <a class="code hl_function" href="#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(&amp;X); <span class="comment">// create test data around the lamniscate</span></div>
<div class="line"><span class="lineno"> 340</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test2.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><span class="lineno"> 341</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w21.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><span class="lineno"> 342</span> kohonen_som_tracer(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 342</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 343</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w22.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><span class="lineno"> 344</span>}</div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a53082f2e5bacec40266499da4547309a"><div class="ttname"><a href="#a53082f2e5bacec40266499da4547309a">test_lamniscate</a></div><div class="ttdeci">void test_lamniscate(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00277">kohonen_som_trace.cpp:277</a></div></div>
@@ -440,7 +506,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00414">414</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 414</span> {</div>
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 200;</div>
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, N = 200;</div>
<div class="line"><span class="lineno"> 416</span> <span class="keywordtype">int</span> features = 3;</div>
<div class="line"><span class="lineno"> 417</span> <span class="keywordtype">int</span> num_out = 20;</div>
<div class="line"><span class="lineno"> 418</span> std::vector&lt;std::valarray&lt;double&gt;&gt; X(N);</div>
@@ -466,7 +532,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<div class="line"><span class="lineno"> 438</span> <a class="code hl_function" href="#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(&amp;X); <span class="comment">// create test data around the lamniscate</span></div>
<div class="line"><span class="lineno"> 439</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test3.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><span class="lineno"> 440</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w31.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><span class="lineno"> 441</span> kohonen_som_tracer(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 441</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><span class="lineno"> 442</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w32.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><span class="lineno"> 443</span>}</div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a7154fe319e6033485a8a6cd6f0d8932d"><div class="ttname"><a href="#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a></div><div class="ttdeci">void test_3d_classes(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00359">kohonen_som_trace.cpp:359</a></div></div>
@@ -506,7 +572,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00359">359</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 359</span> {</div>
<div class="line"><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 361</span> <span class="keyword">const</span> <span class="keywordtype">double</span> R = 0.1; <span class="comment">// radius of cluster</span></div>
<div class="line"><span class="lineno"> 362</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><span class="lineno"> 363</span> <span class="keyword">const</span> <span class="keywordtype">int</span> num_classes = 8;</div>
@@ -525,7 +591,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
<div class="line"><span class="lineno"> 376</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><span class="lineno"> 377</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><span class="lineno"> 378</span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="lineno"> 379</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
<div class="line"><span class="lineno"> 379</span> <span class="keywordflow">for</span> (i = 0; i &lt; N; i++) {</div>
<div class="line"><span class="lineno"> 380</span> <span class="keywordtype">int</span> cls =</div>
<div class="line"><span class="lineno"> 381</span> std::rand() % num_classes; <span class="comment">// select a random class for the point</span></div>
<div class="line"><span class="lineno"> 382</span> </div>
@@ -559,8 +625,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
</table>
</div><div class="memdoc">
<p>Creates a random set of points distributed <em>near</em> the circumference of a circle and trains an SOM that finds that circular pattern. The generating function is </p><p class="formulaDsp">
\begin{eqnarray*}
r &amp;\in&amp; [1-\delta r, 1+\delta r)\\
\begin{eqnarray*}r &amp;\in&amp; [1-\delta r, 1+\delta r)\\
\theta &amp;\in&amp; [0, 2\pi)\\
x &amp;=&amp; r\cos\theta\\
y &amp;=&amp; r\sin\theta
@@ -575,7 +640,7 @@ y &amp;=&amp; r\sin\theta
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00196">196</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 196</span> {</div>
<div class="line"><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 198</span> <span class="keyword">const</span> <span class="keywordtype">double</span> R = 0.75, dr = 0.3;</div>
<div class="line"><span class="lineno"> 199</span> <span class="keywordtype">double</span> a_t = 0., b_t = 2.f * M_PI; <span class="comment">// theta random between 0 and 2*pi</span></div>
<div class="line"><span class="lineno"> 200</span> <span class="keywordtype">double</span> a_r = R - dr, b_r = R + dr; <span class="comment">// radius random between R-dr and R+dr</span></div>
@@ -584,7 +649,7 @@ y &amp;=&amp; r\sin\theta
<div class="line"><span class="lineno"> 203</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><span class="lineno"> 204</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><span class="lineno"> 205</span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="lineno"> 206</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
<div class="line"><span class="lineno"> 206</span> <span class="keywordflow">for</span> (i = 0; i &lt; N; i++) {</div>
<div class="line"><span class="lineno"> 207</span> <span class="keywordtype">double</span> r = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_r, b_r); <span class="comment">// random radius</span></div>
<div class="line"><span class="lineno"> 208</span> <span class="keywordtype">double</span> theta = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_t, b_t); <span class="comment">// random theta</span></div>
<div class="line"><span class="lineno"> 209</span> <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>[0][i][0] = r * cos(theta); <span class="comment">// convert from polar to cartesian</span></div>
@@ -609,8 +674,7 @@ y &amp;=&amp; r\sin\theta
</table>
</div><div class="memdoc">
<p>Creates a random set of points distributed <em>near</em> the locus of the <a href="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono" target="_blank">Lamniscate of Gerono</a>. </p><p class="formulaDsp">
\begin{eqnarray*}
\delta r &amp;=&amp; 0.2\\
\begin{eqnarray*}\delta r &amp;=&amp; 0.2\\
\delta x &amp;\in&amp; [-\delta r, \delta r)\\
\delta y &amp;\in&amp; [-\delta r, \delta r)\\
\theta &amp;\in&amp; [0, \pi)\\
@@ -627,14 +691,14 @@ y &amp;=&amp; \delta y + \frac{\sin(2\theta)}{2}
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00277">277</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 277</span> {</div>
<div class="line"><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
<div class="line"><span class="lineno"> 279</span> <span class="keyword">const</span> <span class="keywordtype">double</span> dr = 0.2;</div>
<div class="line"><span class="lineno"> 280</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><span class="lineno"> 281</span> </div>
<div class="line"><span class="lineno"> 282</span><span class="preprocessor">#ifdef _OPENMP</span></div>
<div class="line"><span class="lineno"> 283</span><span class="preprocessor">#pragma omp for</span></div>
<div class="line"><span class="lineno"> 284</span><span class="preprocessor">#endif</span></div>
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (i = 0; i &lt; N; i++) {</div>
<div class="line"><span class="lineno"> 286</span> <span class="keywordtype">double</span> dx = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <span class="comment">// random change in x</span></div>
<div class="line"><span class="lineno"> 287</span> <span class="keywordtype">double</span> dy = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <span class="comment">// random change in y</span></div>
<div class="line"><span class="lineno"> 288</span> <span class="keywordtype">double</span> theta = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(0, M_PI); <span class="comment">// random theta</span></div>
@@ -651,7 +715,7 @@ y &amp;=&amp; \delta y + \frac{\sin(2\theta)}{2}
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_3343723ae086de42ee4ca9774da3a13f.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d9/d49/kohonen__som__trace_8cpp.html">kohonen_som_trace.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>

View File

@@ -3,6 +3,7 @@ var kohonen__som__trace_8cpp =
[ "_random", "d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485", null ],
[ "get_clock_diff", "d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908", null ],
[ "kohonen_som_tracer", "d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3", null ],
[ "machine_learning::kohonen_som_tracer", "d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3", null ],
[ "main", "d9/d49/kohonen__som__trace_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627", null ],
[ "save_nd_data", "d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67", null ],
[ "test1", "d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0", null ],
@@ -11,5 +12,5 @@ var kohonen__som__trace_8cpp =
[ "test_3d_classes", "d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d", null ],
[ "test_circle", "d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d", null ],
[ "test_lamniscate", "d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a", null ],
[ "update_weights", "d9/d49/kohonen__som__trace_8cpp.html#aa6aac06ccf128b0a9c55c9ee1a8e5631", null ]
[ "machine_learning::update_weights", "d8/d77/namespacemachine__learning.html#aa6aac06ccf128b0a9c55c9ee1a8e5631", null ]
];

View File

@@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: machine_learning/kohonen_som_trace.cpp Source File</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
@@ -60,7 +60,7 @@ window.MathJax = {
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -124,7 +124,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="headertitle"><div class="title">kohonen_som_trace.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d9/d49/kohonen__som__trace_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<a href="../../d9/d49/kohonen__som__trace_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define _USE_MATH_DEFINES </span><span class="comment">// required for MS Visual C++</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;array&gt;</span></div>
@@ -138,11 +138,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#ifdef _OPENMP </span><span class="comment">// check if OpenMP based parallellization is available</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(<span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b) {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> ((b - a) * (std::rand() % 100) / 100.f) + a;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67"> 58</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">const</span> std::vector&lt;std::valarray&lt;double&gt;&gt; &amp;X) {</div>
@@ -175,9 +175,9 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>}</div>
</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d77/namespacemachine__learning.html">machine_learning</a> {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span></div>
<div class="foldopen" id="foldopen00103" data-start="{" data-end="}">
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#aa6aac06ccf128b0a9c55c9ee1a8e5631"> 103</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">update_weights</a>(<span class="keyword">const</span> std::valarray&lt;double&gt; &amp;x,</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> std::vector&lt;std::valarray&lt;double&gt;&gt; *W,</div>
@@ -217,7 +217,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>}</div>
</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span></div>
<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3"> 149</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(<span class="keyword">const</span> std::vector&lt;std::valarray&lt;double&gt;&gt; &amp;X,</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> std::vector&lt;std::valarray&lt;double&gt;&gt; *W,</div>
@@ -250,9 +250,10 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>} <span class="comment">// namespace machine_learning</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="keyword">using </span><a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3">machine_learning::kohonen_som_tracer</a>;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span></div>
<div class="foldopen" id="foldopen00196" data-start="{" data-end="}">
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d"> 196</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
@@ -272,7 +273,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> }</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span>}</div>
</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span></div>
<div class="foldopen" id="foldopen00233" data-start="{" data-end="}">
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0"> 233</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a>() {</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
@@ -301,11 +302,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(&amp;X); <span class="comment">// create test data around circumference of a circle</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test1.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w11.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> kohonen_som_tracer(X, &amp;W, 0.1); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.1); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w12.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span>}</div>
</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span></div>
<div class="foldopen" id="foldopen00277" data-start="{" data-end="}">
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a"> 277</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
@@ -324,7 +325,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> }</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>}</div>
</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span></div>
<div class="foldopen" id="foldopen00315" data-start="{" data-end="}">
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0"> 315</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a>() {</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
@@ -353,11 +354,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(&amp;X); <span class="comment">// create test data around the lamniscate</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test2.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w21.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> kohonen_som_tracer(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w22.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span>}</div>
</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span></div>
<div class="foldopen" id="foldopen00359" data-start="{" data-end="}">
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d"> 359</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
@@ -395,7 +396,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> }</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span>}</div>
</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span></div>
<div class="foldopen" id="foldopen00414" data-start="{" data-end="}">
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a6d0455dd5c30adda100e95f0423c786e"> 414</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a>() {</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, N = 200;</div>
@@ -424,17 +425,17 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(&amp;X); <span class="comment">// create test data around the lamniscate</span></div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;test3.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w31.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> kohonen_som_tracer(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &amp;W, 0.01); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">&quot;w32.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span>}</div>
</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span></div>
<div class="foldopen" id="foldopen00452" data-start="{" data-end="}">
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908"> 452</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a>(clock_t start_t, clock_t end_t) {</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(end_t - start_t) / CLOCKS_PER_SEC;</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span>}</div>
</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span></div>
<div class="foldopen" id="foldopen00457" data-start="{" data-end="}">
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 457</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../dd/d1e/generate__parentheses_8cpp.html#gae66f6b31b5ad750f1fe042a706a4e3d4">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span><span class="preprocessor">#ifdef _OPENMP</span></div>
@@ -474,6 +475,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div class="ttc" id="agroup__machine__learning_html_gaf5ce14f026d6d231bef29161bac2b485"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a></div><div class="ttdeci">double _random(double a, double b)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00053">kohonen_som_topology.cpp:53</a></div></div>
<div class="ttc" id="ahash__search_8cpp_html_a6e1a77282bc65ad359d753d25df23243"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a></div><div class="ttdeci">int data[MAX]</div><div class="ttdoc">test data</div><div class="ttdef"><b>Definition</b> <a href="../../d1/df3/hash__search_8cpp_source.html#l00024">hash_search.cpp:24</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a0283886819c7c140a023582b7269e2d0"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a></div><div class="ttdeci">void test2()</div><div class="ttdef"><b>Definition</b> <a href="#l00315">kohonen_som_trace.cpp:315</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a042f435bca0839e721fc1574a61e8da3"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a></div><div class="ttdeci">void kohonen_som_tracer(const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X, std::vector&lt; std::valarray&lt; double &gt; &gt; *W, double alpha_min)</div><div class="ttdef"><b>Definition</b> <a href="#l00149">kohonen_som_trace.cpp:149</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a1440a7779ac56f47a3f355ce4a8c7da0"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a></div><div class="ttdeci">void test1()</div><div class="ttdef"><b>Definition</b> <a href="#l00233">kohonen_som_trace.cpp:233</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a2256c10b16edba377b64a44b6c656908"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a></div><div class="ttdeci">double get_clock_diff(clock_t start_t, clock_t end_t)</div><div class="ttdef"><b>Definition</b> <a href="#l00452">kohonen_som_trace.cpp:452</a></div></div>
<div class="ttc" id="akohonen__som__trace_8cpp_html_a53082f2e5bacec40266499da4547309a"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a></div><div class="ttdeci">void test_lamniscate(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="#l00277">kohonen_som_trace.cpp:277</a></div></div>
@@ -490,7 +492,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_3343723ae086de42ee4ca9774da3a13f.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d9/d49/kohonen__som__trace_8cpp.html">kohonen_som_trace.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>

View File

@@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: data_structures::Node Struct Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
@@ -60,7 +60,7 @@ window.MathJax = {
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -183,7 +183,7 @@ Public Attributes</h2></td></tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
@@ -272,7 +272,7 @@ Public Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../d5/d3c/namespacedata__structures.html">data_structures</a></li><li class="navelem"><a class="el" href="../../d9/d49/structdata__structures_1_1_node.html">Node</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>