File: test_kernel.py

package info (click to toggle)
python-scipy 0.5.2-0.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 33,888 kB
  • ctags: 44,231
  • sloc: ansic: 156,256; cpp: 90,347; python: 89,604; fortran: 73,083; sh: 1,318; objc: 424; makefile: 342
file content (63 lines) | stat: -rw-r--r-- 2,008 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from numpy.testing import *
import numpy as N

set_local_path('../..')
from svm.kernel import *
restore_path()

def kernelfunc(x, y):
    return 8 * N.dot(x, y.T)

class test_kernel(NumpyTestCase):
    def check_linear_kernel(self):
        kernel = LinearKernel()
        x = N.array([2.])
        self.assertAlmostEqual(kernel(x, x), 4.)

    def check_polynomial_kernel(self):
        kernel = PolynomialKernel(degree=6, gamma=1.0, coef0=1.0)
        x = N.array([2.])
        self.assertAlmostEqual(kernel(x, x), 15625.)

    def check_sigmoid_kernel(self):
        kernel = SigmoidKernel(gamma=0.2, coef0=0.3)
        x = N.array([2.])
        self.assertAlmostEqual(kernel(x, x), 0.80049902)

    def check_rbf_kernel(self):
        kernel = RBFKernel(gamma=1.0)
        x, y = N.array([2.]), N.array([3.])
        self.assertAlmostEqual(kernel(x, y), N.exp(-1.))

    def check_custom_kernel(self):
        kernel = CustomKernel(kernelfunc)
        x = N.array([2.])
        self.assertAlmostEqual(kernel(x, x), 32.0)

    def check_multidim_input(self):
        kernels = [
            LinearKernel(),
            PolynomialKernel(degree=6, gamma=1.0, coef0=1.0),
            SigmoidKernel(gamma=0.2, coef0=0.3),
            RBFKernel(gamma=1.0),
            CustomKernel(kernelfunc)
            ]
        args = [
            N.random.randn(10),
            N.random.randn(1, 10),
            N.random.randn(5, 10)
            ]
        for kernel in kernels:
            self.assert_(type(repr(kernel)) is str)
            for i, x in enumerate(args):
                zshape0 = N.atleast_2d(x).shape[0]
                for y in args[i:]:
                    zshape1 = N.atleast_2d(y).shape[0]
                    z = kernel(x, y)
                    self.assertEqual(z.shape[0], zshape0)
                    self.assertEqual(z.shape[1], zshape1)
                    u = kernel(y, x)
                    assert_array_equal(u.squeeze(), z.squeeze())

if __name__ == '__main__':
    NumpyTest().run()