36 lines
721 B
Python
36 lines
721 B
Python
# coding:utf-8
|
|
import numpy as np
|
|
import scipy.spatial.distance as dist
|
|
|
|
|
|
class Linear(object):
|
|
def __call__(self, x, y):
|
|
return np.dot(x, y.T)
|
|
|
|
def __repr__(self):
|
|
return "Linear kernel"
|
|
|
|
|
|
class Poly(object):
|
|
def __init__(self, degree=2):
|
|
self.degree = degree
|
|
|
|
def __call__(self, x, y):
|
|
return np.dot(x, y.T) ** self.degree
|
|
|
|
def __repr__(self):
|
|
return "Poly kernel"
|
|
|
|
|
|
class RBF(object):
|
|
def __init__(self, gamma=0.1):
|
|
self.gamma = gamma
|
|
|
|
def __call__(self, x, y):
|
|
x = np.atleast_2d(x)
|
|
y = np.atleast_2d(y)
|
|
return np.exp(-self.gamma * dist.cdist(x, y) ** 2).flatten()
|
|
|
|
def __repr__(self):
|
|
return "RBF kernel"
|