最近在学习支持向量机,打算自己写个 toy code 玩玩,来加深理解。具体实现时有个小问题。
比如我定义:
class SVM:
def __init__(self,kernel=linear_kernel):
....
其中,linear_kernel 是个函数
def linear_kernel(x,y):
return np.dot(x,y)
我希望在初始化时,可以使用其他的函数,比如:
def gaussian_kernel(x,y,sigma = 5):
return 1.0/(np.sqrt(2*np.pi)* sigma) * np.exp( (x-y)**2 / (2 * sigma ** 2))
这里,sigma 是在 gaussian_kernel 指定的. 我希望能够在实例化 SVM 类时,如果用的是 guassian_kernel,在实例化过程中就把 sigma 的参数给指定了。
model = SVM(kernel=gaussian_kernel) ##在这里如何设定 sigma,好让 sigma 能传入 gaussian_kernel?
我希望类的初始化的参数越少越好,比如,sigma 是属于 gaussian_kernel 的,不是 类 SVM 自己的,所以我不想把 simga 作为 SVM 的一部分。
如果把 sigma 作为 SVM 的一部分,就会出现当我用 linear_kernel 初始化的时候,SVM 不应该有 sigma,但是它出现了。我觉得这样很不好。所以在这里请教如何实现比较好。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.