<h4 dir="auto">Description</h4>

<p dir="auto">There are a lot of warnings launched during the test process.<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomDLT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomDLT">@TomDLT</a> have cleaned those messages a long time ago but there are a some new warnings.<br>
It's not an easy task but it could be cool to clean all those warnings.</p>
<p dir="auto">With recent improvements and additions, I have come to realize that the codebase starts accumulating several implementations or occurrences of kernels, most of which are not directly interoperable or do not share a common and simple interface.</p>
<p dir="auto">So far, we have kernels (or usages of) in</p>
<ul dir="auto">
<li><code class="notranslate">gaussian_process.kernels</code></li>
<li><code class="notranslate">metrics.pairwise</code></li>
<li><code class="notranslate">svm</code></li>
<li><code class="notranslate">neighbors.KernelDensity</code></li>
<li><code class="notranslate">kernel_approximation</code></li>
<li><code class="notranslate">decomposition.KernelPCA</code></li>
<li>somewhere else?</li>
</ul>
<p dir="auto">I dont know all these parts of the codebase well enough, but I think quite a lot could be factored out if we had some kind unified kernel interface. Benefits would include shorter and common code, consistency of usage for users and potential global optimizations (improving kernel implementations would benefit to all parts of the code using kernels). Also, note that there already exist some bridges, e.g. the GP module defines a special pairwise kernel to use kernels from <code class="notranslate">metrics.pairwise</code>.</p>
<p dir="auto">So far I have nothing to propose to improve things, but still, I wanted to make this remark and gather your opinions. Am I just wrong because I dont know these parts well enough, or do you also sense room for improvements?</p>
<p dir="auto">CC: <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amueller/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amueller">@amueller</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mblondel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mblondel">@mblondel</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jmetzen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jmetzen">@jmetzen</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/agramfort/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/agramfort">@agramfort</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GaelVaroquaux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GaelVaroquaux">@GaelVaroquaux</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ogrisel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ogrisel">@ogrisel</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakevdp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakevdp">@jakevdp</a></p>