MCPcopy Index your code
hub / github.com/TheAlgorithms/Python / Kernel

Class Kernel

machine_learning/sequential_minimum_optimization.py:404–434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

402
403
404class Kernel:
405 def __init__(self, kernel, degree=1.0, coef0=0.0, gamma=1.0):
406 self.degree = np.float64(degree)
407 self.coef0 = np.float64(coef0)
408 self.gamma = np.float64(gamma)
409 self._kernel_name = kernel
410 self._kernel = self._get_kernel(kernel_name=kernel)
411 self._check()
412
413 def _polynomial(self, v1, v2):
414 return (self.gamma * np.inner(v1, v2) + self.coef0) ** self.degree
415
416 def _linear(self, v1, v2):
417 return np.inner(v1, v2) + self.coef0
418
419 def _rbf(self, v1, v2):
420 return np.exp(-1 * (self.gamma * np.linalg.norm(v1 - v2) ** 2))
421
422 def _check(self):
423 if self._kernel == self._rbf and self.gamma < 0:
424 raise ValueError("gamma value must be non-negative")
425
426 def _get_kernel(self, kernel_name):
427 maps = {"linear": self._linear, "poly": self._polynomial, "rbf": self._rbf}
428 return maps[kernel_name]
429
430 def __call__(self, v1, v2):
431 return self._kernel(v1, v2)
432
433 def __repr__(self):
434 return self._kernel_name
435
436
437def count_time(func):

Callers 3

test_cancer_dataFunction · 0.85
test_linear_kernelFunction · 0.85
test_rbf_kernelFunction · 0.85

Calls

no outgoing calls

Tested by 3

test_cancer_dataFunction · 0.68
test_linear_kernelFunction · 0.68
test_rbf_kernelFunction · 0.68