Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > contrib-backports > by-pkgid > e578866d55cd81fdb23827cdf3cec911 > files > 625

python-scikits-learn-0.6-1mdv2010.2.i586.rpm



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Libsvm GUI &mdash; scikits.learn v0.6.0 documentation</title>
    <link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../',
        VERSION:     '0.6.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <link rel="shortcut icon" href="../../_static/favicon.ico"/>
    <link rel="author" title="About these documents" href="../../about.html" />
    <link rel="top" title="scikits.learn v0.6.0 documentation" href="../../index.html" />
    <link rel="up" title="Examples" href="../index.html" />
    <link rel="next" title="Wikipedia princial eigenvector" href="wikipedia_principal_eigenvector.html" />
    <link rel="prev" title="Finding structure in the stock market" href="stock_market.html" /> 
  </head>
  <body>
    <div class="header-wrapper">
      <div class="header">
          <p class="logo"><a href="../../index.html">
            <img src="../../_static/scikit-learn-logo-small.png" alt="Logo"/>
          </a>
          </p><div class="navbar">
          <ul>
            <li><a href="../../install.html">Download</a></li>
            <li><a href="../../support.html">Support</a></li>
            <li><a href="../../user_guide.html">User Guide</a></li>
            <li><a href="../index.html">Examples</a></li>
            <li><a href="../../developers/index.html">Development</a></li>
       </ul>

<div class="search_form">

<div id="cse" style="width: 100%;"></div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
  google.load('search', '1', {language : 'en'});
  google.setOnLoadCallback(function() {
    var customSearchControl = new google.search.CustomSearchControl('016639176250731907682:tjtqbvtvij0');
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    var options = new google.search.DrawOptions();
    options.setAutoComplete(true);
    customSearchControl.draw('cse', options);
  }, true);
</script>

</div>

          </div> <!-- end navbar --></div>
    </div>

    <div class="content-wrapper">

    <!-- <div id="blue_tile"></div> -->

        <div class="sphinxsidebar">
        <div class="rel">
          <a href="stock_market.html" title="Finding structure in the stock market"
             accesskey="P">previous</a> |
          <a href="wikipedia_principal_eigenvector.html" title="Wikipedia princial eigenvector"
             accesskey="N">next</a> |
          <a href="../../genindex.html" title="General Index"
             accesskey="I">index</a>
        </div>
        

        <h3>Contents</h3>
         <ul>
<li><a class="reference internal" href="#">Libsvm GUI</a><ul>
<li><a class="reference internal" href="#requirements">Requirements</a></li>
</ul>
</li>
</ul>


        

        </div>

      <div class="content">
            
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="libsvm-gui">
<span id="example-applications-svm-gui-py"></span><h1>Libsvm GUI<a class="headerlink" href="#libsvm-gui" title="Permalink to this headline">¶</a></h1>
<p>A simple graphical frontend for Libsvm mainly intended for didactic
purposes. You can create data points by point and click and visualize
the decision region induced by different kernels and parameter settings.</p>
<p>To create positive examples click the left mouse button; to create
negative examples click the right button.</p>
<p>If all examples are from the same class, it uses a one-class SVM.</p>
<p>TODO add labels to the panel.</p>
<div class="section" id="requirements">
<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2>
<blockquote>
<ul class="simple">
<li>Tkinter</li>
<li>scikits.learn</li>
<li>matplotlib with TkAgg</li>
</ul>
</blockquote>
<p><strong>Python source code:</strong> <a class="reference download internal" href="../../_downloads/svm_gui.py"><tt class="xref download docutils literal"><span class="pre">svm_gui.py</span></tt></a></p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span>

<span class="k">print</span> <span class="n">__doc__</span>

<span class="c"># Author: Peter Prettenhoer &lt;peter.prettenhofer@gmail.com&gt;</span>
<span class="c">#</span>
<span class="c"># License: BSD Style.</span>

<span class="kn">import</span> <span class="nn">matplotlib</span>
<span class="n">matplotlib</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s">&#39;TkAgg&#39;</span><span class="p">)</span>

<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_tkagg</span> <span class="kn">import</span> <span class="n">FigureCanvasTkAgg</span>
<span class="c">#from matplotlib.backends.backend_tkagg import NavigationToolbar2TkAgg</span>
<span class="kn">from</span> <span class="nn">matplotlib.figure</span> <span class="kn">import</span> <span class="n">Figure</span>
<span class="kn">from</span> <span class="nn">matplotlib.contour</span> <span class="kn">import</span> <span class="n">ContourSet</span>

<span class="kn">import</span> <span class="nn">Tkinter</span> <span class="kn">as</span> <span class="nn">Tk</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>

<span class="kn">from</span> <span class="nn">scikits.learn</span> <span class="kn">import</span> <span class="n">svm</span>

<span class="n">y_min</span><span class="p">,</span> <span class="n">y_max</span> <span class="o">=</span> <span class="o">-</span><span class="mi">50</span><span class="p">,</span> <span class="mi">50</span>
<span class="n">x_min</span><span class="p">,</span> <span class="n">x_max</span> <span class="o">=</span> <span class="o">-</span><span class="mi">50</span><span class="p">,</span> <span class="mi">50</span>


<span class="k">class</span> <span class="nc">Model</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;The Model which hold the data. It implements the</span>
<span class="sd">    observable in the observer pattern and notifies the</span>
<span class="sd">    registered observers on change event.</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">observers</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">surface</span> <span class="o">=</span> <span class="bp">None</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">cls</span> <span class="o">=</span> <span class="bp">None</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">surface_type</span> <span class="o">=</span> <span class="mi">0</span>

    <span class="k">def</span> <span class="nf">changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;Notify the observers. &quot;&quot;&quot;</span>
        <span class="k">for</span> <span class="n">observer</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">observers</span><span class="p">:</span>
            <span class="n">observer</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">add_observer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">observer</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;Register an observer. &quot;&quot;&quot;</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">observers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">observer</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">set_surface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">surface</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">surface</span> <span class="o">=</span> <span class="n">surface</span>


<span class="k">class</span> <span class="nc">Controller</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">kernel</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">IntVar</span><span class="p">()</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">surface_type</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">IntVar</span><span class="p">()</span>
        <span class="c"># Whether or not a model has been fitted</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">fitted</span> <span class="o">=</span> <span class="bp">False</span>

    <span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="k">print</span> <span class="s">&quot;fit the model&quot;</span>
        <span class="n">train</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
        <span class="n">X</span> <span class="o">=</span> <span class="n">train</span><span class="p">[:,</span> <span class="p">:</span><span class="mi">2</span><span class="p">]</span>
        <span class="n">y</span> <span class="o">=</span> <span class="n">train</span><span class="p">[:,</span> <span class="mi">2</span><span class="p">]</span>

        <span class="n">C</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">complexity</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
        <span class="n">gamma</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">gamma</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
        <span class="n">coef0</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">coef0</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
        <span class="n">degree</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">degree</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
        <span class="n">kernel_map</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s">&quot;linear&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="s">&quot;rbf&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s">&quot;poly&quot;</span><span class="p">}</span>
        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">y</span><span class="p">))</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
            <span class="n">clf</span> <span class="o">=</span> <span class="n">svm</span><span class="o">.</span><span class="n">OneClassSVM</span><span class="p">(</span><span class="n">kernel</span><span class="o">=</span><span class="n">kernel_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">kernel</span><span class="o">.</span><span class="n">get</span><span class="p">()],</span>
                      <span class="n">gamma</span><span class="o">=</span><span class="n">gamma</span><span class="p">,</span> <span class="n">coef0</span><span class="o">=</span><span class="n">coef0</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="n">degree</span><span class="p">)</span>
            <span class="n">clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="n">clf</span> <span class="o">=</span> <span class="n">svm</span><span class="o">.</span><span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span><span class="o">=</span><span class="n">kernel_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">kernel</span><span class="o">.</span><span class="n">get</span><span class="p">()],</span> <span class="n">C</span><span class="o">=</span><span class="n">C</span><span class="p">,</span>
                          <span class="n">gamma</span><span class="o">=</span><span class="n">gamma</span><span class="p">,</span> <span class="n">coef0</span><span class="o">=</span><span class="n">coef0</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="n">degree</span><span class="p">)</span>
            <span class="n">clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
        <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">clf</span><span class="p">,</span> <span class="s">&#39;score&#39;</span><span class="p">):</span>
            <span class="k">print</span> <span class="s">&quot;Accuracy:&quot;</span><span class="p">,</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="o">*</span> <span class="mi">100</span>
        <span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">decision_surface</span><span class="p">(</span><span class="n">clf</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">clf</span> <span class="o">=</span> <span class="n">clf</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">set_surface</span><span class="p">((</span><span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span><span class="p">))</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">surface_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">surface_type</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">fitted</span> <span class="o">=</span> <span class="bp">True</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">changed</span><span class="p">(</span><span class="s">&quot;surface&quot;</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">decision_surface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cls</span><span class="p">):</span>
        <span class="n">delta</span> <span class="o">=</span> <span class="mi">1</span>
        <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">x_min</span><span class="p">,</span> <span class="n">x_max</span> <span class="o">+</span> <span class="n">delta</span><span class="p">,</span> <span class="n">delta</span><span class="p">)</span>
        <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">y_min</span><span class="p">,</span> <span class="n">y_max</span> <span class="o">+</span> <span class="n">delta</span><span class="p">,</span> <span class="n">delta</span><span class="p">)</span>
        <span class="n">X1</span><span class="p">,</span> <span class="n">X2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
        <span class="n">Z</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">c_</span><span class="p">[</span><span class="n">X1</span><span class="o">.</span><span class="n">ravel</span><span class="p">(),</span> <span class="n">X2</span><span class="o">.</span><span class="n">ravel</span><span class="p">()])</span>
        <span class="n">Z</span> <span class="o">=</span> <span class="n">Z</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">X1</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
        <span class="k">return</span> <span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span>

    <span class="k">def</span> <span class="nf">clear_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">fitted</span> <span class="o">=</span> <span class="bp">False</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">changed</span><span class="p">(</span><span class="s">&quot;clear&quot;</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">add_example</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">label</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">label</span><span class="p">))</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">changed</span><span class="p">(</span><span class="s">&quot;example_added&quot;</span><span class="p">)</span>

        <span class="c"># update decision surface if already fitted.</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">refit</span><span class="p">()</span>

    <span class="k">def</span> <span class="nf">refit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;Refit the model if already fitted. &quot;&quot;&quot;</span>
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fitted</span><span class="p">:</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>


<span class="k">class</span> <span class="nc">View</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;Test docstring. &quot;&quot;&quot;</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">,</span> <span class="n">controller</span><span class="p">):</span>
        <span class="n">f</span> <span class="o">=</span> <span class="n">Figure</span><span class="p">()</span>
        <span class="n">ax</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
        <span class="n">ax</span><span class="o">.</span><span class="n">set_xticks</span><span class="p">([])</span>
        <span class="n">ax</span><span class="o">.</span><span class="n">set_yticks</span><span class="p">([])</span>
        <span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">((</span><span class="n">x_min</span><span class="p">,</span> <span class="n">x_max</span><span class="p">))</span>
        <span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">((</span><span class="n">y_min</span><span class="p">,</span> <span class="n">y_max</span><span class="p">))</span>
        <span class="n">canvas</span> <span class="o">=</span> <span class="n">FigureCanvasTkAgg</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">master</span><span class="o">=</span><span class="n">root</span><span class="p">)</span>
        <span class="n">canvas</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
        <span class="n">canvas</span><span class="o">.</span><span class="n">get_tk_widget</span><span class="p">()</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
        <span class="n">canvas</span><span class="o">.</span><span class="n">_tkcanvas</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
        <span class="n">canvas</span><span class="o">.</span><span class="n">mpl_connect</span><span class="p">(</span><span class="s">&#39;button_press_event&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">onclick</span><span class="p">)</span>
<span class="c">#        toolbar = NavigationToolbar2TkAgg(canvas, root)</span>
<span class="c">#        toolbar.update()</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">controllbar</span> <span class="o">=</span> <span class="n">ControllBar</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">controller</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">ax</span> <span class="o">=</span> <span class="n">ax</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span> <span class="o">=</span> <span class="n">canvas</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">controller</span> <span class="o">=</span> <span class="n">controller</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">c_labels</span> <span class="o">=</span> <span class="bp">None</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">plot_kernels</span><span class="p">()</span>

    <span class="k">def</span> <span class="nf">plot_kernels</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">-</span><span class="mi">50</span><span class="p">,</span> <span class="o">-</span><span class="mi">60</span><span class="p">,</span> <span class="s">&quot;Linear: $u^T v$&quot;</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">-</span><span class="mi">20</span><span class="p">,</span> <span class="o">-</span><span class="mi">60</span><span class="p">,</span> <span class="s">&quot;RBF: $\exp (-\gamma \| u-v \|^2)$&quot;</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="o">-</span><span class="mi">60</span><span class="p">,</span> <span class="s">&quot;Poly: $(\gamma \, u^T v + r)^d$&quot;</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">onclick</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">xdata</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">ydata</span><span class="p">:</span>
            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">button</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
                <span class="bp">self</span><span class="o">.</span><span class="n">controller</span><span class="o">.</span><span class="n">add_example</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">xdata</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">ydata</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">button</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
                <span class="bp">self</span><span class="o">.</span><span class="n">controller</span><span class="o">.</span><span class="n">add_example</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">xdata</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">ydata</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
        <span class="k">if</span> <span class="n">event</span> <span class="o">==</span> <span class="s">&quot;example_added&quot;</span><span class="p">:</span>
            <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">l</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
            <span class="k">if</span> <span class="n">l</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
                <span class="n">color</span> <span class="o">=</span> <span class="s">&#39;w&#39;</span>
            <span class="k">elif</span> <span class="n">l</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
                <span class="n">color</span> <span class="o">=</span> <span class="s">&#39;k&#39;</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="n">x</span><span class="p">],</span> <span class="p">[</span><span class="n">y</span><span class="p">],</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">o&quot;</span> <span class="o">%</span> <span class="n">color</span><span class="p">,</span> <span class="n">scalex</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">scaley</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>

        <span class="k">if</span> <span class="n">event</span> <span class="o">==</span> <span class="s">&quot;clear&quot;</span><span class="p">:</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">set_xticks</span><span class="p">([])</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">set_yticks</span><span class="p">([])</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">c_labels</span> <span class="o">=</span> <span class="bp">None</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">plot_kernels</span><span class="p">()</span>

        <span class="k">if</span> <span class="n">event</span> <span class="o">==</span> <span class="s">&quot;surface&quot;</span><span class="p">:</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">remove_surface</span><span class="p">()</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">plot_support_vectors</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">clf</span><span class="o">.</span><span class="n">support_vectors_</span><span class="p">)</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">plot_decision_surface</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">surface</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">surface_type</span><span class="p">)</span>

        <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>

    <span class="k">def</span> <span class="nf">remove_surface</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;Remove old decision surface.&quot;&quot;&quot;</span>
        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
            <span class="k">for</span> <span class="n">contour</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="p">:</span>
                <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">contour</span><span class="p">,</span> <span class="n">ContourSet</span><span class="p">):</span>
                    <span class="k">for</span> <span class="n">lineset</span> <span class="ow">in</span> <span class="n">contour</span><span class="o">.</span><span class="n">collections</span><span class="p">:</span>
                        <span class="n">lineset</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
                <span class="k">else</span><span class="p">:</span>
                    <span class="n">contour</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">contours</span> <span class="o">=</span> <span class="p">[]</span>

    <span class="k">def</span> <span class="nf">plot_support_vectors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">support_vectors</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;Plot the support vectors by placing circles over the</span>
<span class="sd">        corresponding data points and adds the circle collection</span>
<span class="sd">        to the contours list.&quot;&quot;&quot;</span>
        <span class="n">cs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">support_vectors</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">support_vectors</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span>
                             <span class="n">s</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">edgecolors</span><span class="o">=</span><span class="s">&quot;k&quot;</span><span class="p">,</span> <span class="n">facecolors</span><span class="o">=</span><span class="s">&quot;none&quot;</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cs</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">plot_decision_surface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">surface</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
        <span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span> <span class="o">=</span> <span class="n">surface</span>
        <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">levels</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">]</span>
            <span class="n">linestyles</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;dashed&#39;</span><span class="p">,</span> <span class="s">&#39;solid&#39;</span><span class="p">,</span> <span class="s">&#39;dashed&#39;</span><span class="p">]</span>
            <span class="n">colors</span> <span class="o">=</span> <span class="s">&#39;k&#39;</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">contour</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span><span class="p">,</span> <span class="n">levels</span><span class="p">,</span>
                                                 <span class="n">colors</span><span class="o">=</span><span class="n">colors</span><span class="p">,</span>
                                                 <span class="n">linestyles</span><span class="o">=</span><span class="n">linestyles</span><span class="p">))</span>
        <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span>
                                             <span class="n">cmap</span><span class="o">=</span><span class="n">matplotlib</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">bone</span><span class="p">,</span>
                                             <span class="n">origin</span><span class="o">=</span><span class="s">&#39;lower&#39;</span><span class="p">,</span>
                                             <span class="n">alpha</span><span class="o">=</span><span class="mf">0.85</span><span class="p">))</span>
            <span class="bp">self</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">contour</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span> <span class="n">X2</span><span class="p">,</span> <span class="n">Z</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">],</span>
                                                 <span class="n">colors</span><span class="o">=</span><span class="s">&#39;k&#39;</span><span class="p">,</span>
                                                 <span class="n">linestyles</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;solid&#39;</span><span class="p">]))</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;surface type unknown&quot;</span><span class="p">)</span>


<span class="k">class</span> <span class="nc">ControllBar</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">,</span> <span class="n">controller</span><span class="p">):</span>
        <span class="n">fm</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
        <span class="n">kernel_group</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">fm</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Radiobutton</span><span class="p">(</span><span class="n">kernel_group</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;Linear&quot;</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">kernel</span><span class="p">,</span>
                       <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">refit</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">anchor</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">W</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Radiobutton</span><span class="p">(</span><span class="n">kernel_group</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;RBF&quot;</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">kernel</span><span class="p">,</span>
                       <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">refit</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">anchor</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">W</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Radiobutton</span><span class="p">(</span><span class="n">kernel_group</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;Poly&quot;</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">kernel</span><span class="p">,</span>
                       <span class="n">value</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">refit</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">anchor</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">W</span><span class="p">)</span>
        <span class="n">kernel_group</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>

        <span class="n">valbox</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">fm</span><span class="p">)</span>
        <span class="n">controller</span><span class="o">.</span><span class="n">complexity</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">StringVar</span><span class="p">()</span>
        <span class="n">controller</span><span class="o">.</span><span class="n">complexity</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;1.0&quot;</span><span class="p">)</span>
        <span class="n">c</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">valbox</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;C:&quot;</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="s">&quot;e&quot;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Entry</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">complexity</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span>
            <span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">c</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

        <span class="n">controller</span><span class="o">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">StringVar</span><span class="p">()</span>
        <span class="n">controller</span><span class="o">.</span><span class="n">gamma</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;0.01&quot;</span><span class="p">)</span>
        <span class="n">g</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">valbox</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;gamma:&quot;</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="s">&quot;e&quot;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Entry</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">gamma</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">g</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

        <span class="n">controller</span><span class="o">.</span><span class="n">degree</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">StringVar</span><span class="p">()</span>
        <span class="n">controller</span><span class="o">.</span><span class="n">degree</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;3&quot;</span><span class="p">)</span>
        <span class="n">d</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">valbox</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;degree:&quot;</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="s">&quot;e&quot;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Entry</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">degree</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">d</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

        <span class="n">controller</span><span class="o">.</span><span class="n">coef0</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">StringVar</span><span class="p">()</span>
        <span class="n">controller</span><span class="o">.</span><span class="n">coef0</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;0&quot;</span><span class="p">)</span>
        <span class="n">r</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">valbox</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;coef0:&quot;</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="s">&quot;e&quot;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Entry</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">coef0</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">r</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
        <span class="n">valbox</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>

        <span class="n">cmap_group</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">fm</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Radiobutton</span><span class="p">(</span><span class="n">cmap_group</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;Hyperplanes&quot;</span><span class="p">,</span>
                       <span class="n">variable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">surface_type</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
                       <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">refit</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">anchor</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">W</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Radiobutton</span><span class="p">(</span><span class="n">cmap_group</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&quot;Surface&quot;</span><span class="p">,</span>
                       <span class="n">variable</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">surface_type</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
                       <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">refit</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">anchor</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">W</span><span class="p">)</span>

        <span class="n">cmap_group</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>

        <span class="n">train_button</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">fm</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&#39;Fit&#39;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
                                 <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">fit</span><span class="p">)</span>
        <span class="n">train_button</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
        <span class="n">fm</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
        <span class="n">Tk</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">fm</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s">&#39;Clear&#39;</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
                  <span class="n">command</span><span class="o">=</span><span class="n">controller</span><span class="o">.</span><span class="n">clear_data</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">Tk</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="p">):</span>
    <span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Tk</span><span class="p">()</span>
    <span class="n">model</span> <span class="o">=</span> <span class="n">Model</span><span class="p">()</span>
    <span class="n">controller</span> <span class="o">=</span> <span class="n">Controller</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
    <span class="n">root</span><span class="o">.</span><span class="n">wm_title</span><span class="p">(</span><span class="s">&quot;Scikit-learn Libsvm GUI&quot;</span><span class="p">)</span>
    <span class="n">view</span> <span class="o">=</span> <span class="n">View</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">controller</span><span class="p">)</span>
    <span class="n">model</span><span class="o">.</span><span class="n">add_observer</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
    <span class="n">Tk</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>

<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
    <span class="n">main</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
        <div class="clearer"></div>
      </div>
    </div>

    <div class="footer">
        <p style="text-align: center">This documentation is relative
        to scikits.learn version 0.6.0<p>
        &copy; 2010, scikits.learn developers (BSD Lincense).
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.5. Design by <a href="http://webylimonada.com">Web y Limonada</a>.
    </div>
  </body>
</html>