def apply(self): kernel = ["linear", "poly", "rbf", "sigmoid"][self.kernel_type] common_args = dict(kernel=kernel, degree=self.degree, gamma=self.gamma, coef0=self.coef0, tol=self.tol, preprocessors=self.preprocessors) if self.svrtype == OWSVMRegression.Epsilon_SVR: learner = svm.SVRLearner(C=self.epsilon_C, epsilon=self.epsilon, **common_args) else: learner = svm.NuSVRLearner(C=self.nu_C, nu=self.nu, **common_args) learner.name = self.learner_name predictor = None sv = None if self.data is not None: predictor = learner(self.data) predictor.name = self.learner_name sv = self.data[predictor.skl_model.support_] self.send("Learner", learner) self.send("Predictor", predictor) self.send("Support vectors", sv)
def test_SVR(self): nrows = 500 ncols = 5 x = np.sort(10 * np.random.rand(nrows, ncols)) y = np.sum(np.sin(x), axis=1).reshape(nrows, 1) x1, x2 = np.split(x, 2) y1, y2 = np.split(y, 2) t = data.Table(x1, y1) learn = svm.SVRLearner(kernel='rbf', C=1e3, gamma=0.1) clf = learn(t) z = clf(x2) self.assertTrue((abs(z.reshape(-1, 1) - y2) < 4.0).all())