|
-
-
- <!DOCTYPE html>
- <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
- <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
- <head>
- <meta charset="utf-8">
-
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <title>pygraph.utils.kernels — py-graph documentation</title>
-
-
-
-
-
-
-
-
- <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
-
-
- <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></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>
- <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
- <script type="text/javascript" src="../../../_static/js/theme.js"></script>
-
-
-
-
- <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
- <link rel="index" title="Index" href="../../../genindex.html" />
- <link rel="search" title="Search" href="../../../search.html" />
- </head>
-
- <body class="wy-body-for-nav">
-
-
- <div class="wy-grid-for-nav">
-
- <nav data-toggle="wy-nav-shift" class="wy-nav-side">
- <div class="wy-side-scroll">
- <div class="wy-side-nav-search" >
-
-
-
- <a href="../../../index.html" class="icon icon-home"> py-graph
-
-
-
- </a>
-
-
-
-
- <div class="version">
- 1.0
- </div>
-
-
-
-
- <div role="search">
- <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
- <input type="text" name="q" placeholder="Search docs" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- </div>
-
-
- </div>
-
- <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-
-
-
-
-
-
- <!-- Local TOC -->
- <div class="local-toc"></div>
-
-
- </div>
- </div>
- </nav>
-
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-
- <nav class="wy-nav-top" aria-label="top navigation">
-
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
- <a href="../../../index.html">py-graph</a>
-
- </nav>
-
-
- <div class="wy-nav-content">
-
- <div class="rst-content">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <div role="navigation" aria-label="breadcrumbs navigation">
-
- <ul class="wy-breadcrumbs">
-
- <li><a href="../../../index.html">Docs</a> »</li>
-
- <li><a href="../../index.html">Module code</a> »</li>
-
- <li>pygraph.utils.kernels</li>
-
-
- <li class="wy-breadcrumbs-aside">
-
- </li>
-
- </ul>
-
-
- <hr/>
- </div>
- <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
- <div itemprop="articleBody">
-
- <h1>Source code for pygraph.utils.kernels</h1><div class="highlight"><pre>
- <span></span><span class="sd">"""Those who are not graph kernels. We can be kernels for nodes or edges!</span>
- <span class="sd">These kernels are defined between pairs of vectors.</span>
- <span class="sd">"""</span>
- <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
-
- <div class="viewcode-block" id="deltakernel"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.deltakernel">[docs]</a><span class="k">def</span> <span class="nf">deltakernel</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="sd">"""Delta kernel. Return 1 if x == y, 0 otherwise.</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> x, y : any</span>
- <span class="sd"> Two parts to compare.</span>
-
- <span class="sd"> Return</span>
- <span class="sd"> ------</span>
- <span class="sd"> kernel : integer</span>
- <span class="sd"> Delta kernel.</span>
-
- <span class="sd"> References</span>
- <span class="sd"> ----------</span>
- <span class="sd"> [1] H. Kashima, K. Tsuda, and A. Inokuchi. Marginalized kernels between </span>
- <span class="sd"> labeled graphs. In Proceedings of the 20th International Conference on </span>
- <span class="sd"> Machine Learning, Washington, DC, United States, 2003.</span>
- <span class="sd"> """</span>
- <span class="k">return</span> <span class="n">x</span> <span class="o">==</span> <span class="n">y</span> <span class="c1">#(1 if condition else 0)</span></div>
-
-
- <div class="viewcode-block" id="gaussiankernel"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.gaussiankernel">[docs]</a><span class="k">def</span> <span class="nf">gaussiankernel</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">gamma</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
- <span class="sd">"""Gaussian kernel.</span>
- <span class="sd"> Compute the rbf (gaussian) kernel between x and y:</span>
-
- <span class="sd"> K(x, y) = exp(-gamma ||x-y||^2).</span>
-
- <span class="sd"> Read more in the :ref:`User Guide <rbf_kernel>`.</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> x, y : array</span>
-
- <span class="sd"> gamma : float, default None</span>
- <span class="sd"> If None, defaults to 1.0 / n_features</span>
-
- <span class="sd"> Returns</span>
- <span class="sd"> -------</span>
- <span class="sd"> kernel : float</span>
- <span class="sd"> """</span>
- <span class="k">if</span> <span class="n">gamma</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
- <span class="n">gamma</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
-
- <span class="n">xt</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="nb">float</span><span class="p">(</span><span class="n">itm</span><span class="p">)</span> <span class="k">for</span> <span class="n">itm</span> <span class="ow">in</span> <span class="n">x</span><span class="p">])</span>
- <span class="n">yt</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="nb">float</span><span class="p">(</span><span class="n">itm</span><span class="p">)</span> <span class="k">for</span> <span class="n">itm</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">xt</span> <span class="o">-</span> <span class="n">yt</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">kernel</span> <span class="o">**</span> <span class="mi">2</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">kernel</span><span class="p">)</span>
- <span class="n">kernel</span> <span class="o">*=</span> <span class="o">-</span><span class="n">gamma</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">kernel</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">kernel</span></div>
-
-
- <div class="viewcode-block" id="polynomialkernel"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.polynomialkernel">[docs]</a><span class="k">def</span> <span class="nf">polynomialkernel</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">d</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
- <span class="sd">"""Polynomial kernel.</span>
- <span class="sd"> Compute the polynomial kernel between x and y:</span>
-
- <span class="sd"> K(x, y) = <x, y> ^d + c.</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> x, y : array</span>
-
- <span class="sd"> d : integer, default 1</span>
- <span class="sd"> </span>
- <span class="sd"> c : float, default 0</span>
-
- <span class="sd"> Returns</span>
- <span class="sd"> -------</span>
- <span class="sd"> kernel : float</span>
- <span class="sd"> """</span>
- <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</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="n">d</span> <span class="o">+</span> <span class="n">c</span></div>
-
-
- <div class="viewcode-block" id="linearkernel"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.linearkernel">[docs]</a><span class="k">def</span> <span class="nf">linearkernel</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="sd">"""Polynomial kernel.</span>
- <span class="sd"> Compute the polynomial kernel between x and y:</span>
-
- <span class="sd"> K(x, y) = <x, y>.</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> x, y : array</span>
-
- <span class="sd"> d : integer, default 1</span>
- <span class="sd"> </span>
- <span class="sd"> c : float, default 0</span>
-
- <span class="sd"> Returns</span>
- <span class="sd"> -------</span>
- <span class="sd"> kernel : float</span>
- <span class="sd"> """</span>
- <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span></div>
-
-
- <div class="viewcode-block" id="kernelsum"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.kernelsum">[docs]</a><span class="k">def</span> <span class="nf">kernelsum</span><span class="p">(</span><span class="n">k1</span><span class="p">,</span> <span class="n">k2</span><span class="p">,</span> <span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">,</span> <span class="n">d21</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">d22</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lamda1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">lamda2</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
- <span class="sd">"""Sum of a pair of kernels.</span>
-
- <span class="sd"> k = lamda1 * k1(d11, d12) + lamda2 * k2(d21, d22)</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> k1, k2 : function</span>
- <span class="sd"> A pair of kernel functions.</span>
- <span class="sd"> d11, d12:</span>
- <span class="sd"> Inputs of k1. If d21 or d22 is None, apply d11, d12 to both k1 and k2.</span>
- <span class="sd"> d21, d22:</span>
- <span class="sd"> Inputs of k2.</span>
- <span class="sd"> lamda1, lamda2: float</span>
- <span class="sd"> Coefficients of the product.</span>
-
- <span class="sd"> Return</span>
- <span class="sd"> ------</span>
- <span class="sd"> kernel : integer</span>
-
- <span class="sd"> """</span>
- <span class="k">if</span> <span class="n">d21</span> <span class="o">==</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">d22</span> <span class="o">==</span> <span class="kc">None</span><span class="p">:</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">lamda1</span> <span class="o">*</span> <span class="n">k1</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span> <span class="o">+</span> <span class="n">lamda2</span> <span class="o">*</span> <span class="n">k2</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">lamda1</span> <span class="o">*</span> <span class="n">k1</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span> <span class="o">+</span> <span class="n">lamda2</span> <span class="o">*</span> <span class="n">k2</span><span class="p">(</span><span class="n">d21</span><span class="p">,</span> <span class="n">d22</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">kernel</span></div>
-
-
- <div class="viewcode-block" id="kernelproduct"><a class="viewcode-back" href="../../../pygraph.utils.html#pygraph.utils.kernels.kernelproduct">[docs]</a><span class="k">def</span> <span class="nf">kernelproduct</span><span class="p">(</span><span class="n">k1</span><span class="p">,</span> <span class="n">k2</span><span class="p">,</span> <span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">,</span> <span class="n">d21</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">d22</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lamda</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
- <span class="sd">"""Product of a pair of kernels.</span>
-
- <span class="sd"> k = lamda * k1(d11, d12) * k2(d21, d22)</span>
-
- <span class="sd"> Parameters</span>
- <span class="sd"> ----------</span>
- <span class="sd"> k1, k2 : function</span>
- <span class="sd"> A pair of kernel functions.</span>
- <span class="sd"> d11, d12:</span>
- <span class="sd"> Inputs of k1. If d21 or d22 is None, apply d11, d12 to both k1 and k2.</span>
- <span class="sd"> d21, d22:</span>
- <span class="sd"> Inputs of k2.</span>
- <span class="sd"> lamda: float</span>
- <span class="sd"> Coefficient of the product.</span>
-
- <span class="sd"> Return</span>
- <span class="sd"> ------</span>
- <span class="sd"> kernel : integer</span>
- <span class="sd"> """</span>
- <span class="k">if</span> <span class="n">d21</span> <span class="o">==</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">d22</span> <span class="o">==</span> <span class="kc">None</span><span class="p">:</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">lamda</span> <span class="o">*</span> <span class="n">k1</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span> <span class="o">*</span> <span class="n">k2</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">kernel</span> <span class="o">=</span> <span class="n">lamda</span> <span class="o">*</span> <span class="n">k1</span><span class="p">(</span><span class="n">d11</span><span class="p">,</span> <span class="n">d12</span><span class="p">)</span> <span class="o">*</span> <span class="n">k2</span><span class="p">(</span><span class="n">d21</span><span class="p">,</span> <span class="n">d22</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">kernel</span></div>
-
-
- <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
- <span class="n">o</span> <span class="o">=</span> <span class="n">polynomialkernel</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
- </pre></div>
-
- </div>
-
- </div>
- <footer>
-
-
- <hr/>
-
- <div role="contentinfo">
- <p>
- © Copyright 2020, Linlin Jia
-
- </p>
- </div>
- Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
-
- </footer>
-
- </div>
- </div>
-
- </section>
-
- </div>
-
-
-
- <script type="text/javascript">
- jQuery(function () {
- SphinxRtdTheme.Navigation.enable(true);
- });
- </script>
-
-
-
-
-
-
- </body>
- </html>
|