def regression_libsvr_modular (svm_c=1, svr_param=0.1, n=100,n_test=100, \ x_range=6,x_range_test=10,noise_var=0.5,width=1, seed=1): from shogun.Features import RegressionLabels, RealFeatures from shogun.Kernel import GaussianKernel from shogun.Regression import LibSVR, LIBSVR_NU_SVR, LIBSVR_EPSILON_SVR # reproducable results random.seed(seed) # easy regression data: one dimensional noisy sine wave n=15 n_test=100 x_range_test=10 noise_var=0.5; X=random.rand(1,n)*x_range X_test=array([[float(i)/n_test*x_range_test for i in range(n_test)]]) Y_test=sin(X_test) Y=sin(X)+random.randn(n)*noise_var # shogun representation labels=RegressionLabels(Y[0]) feats_train=RealFeatures(X) feats_test=RealFeatures(X_test) kernel=GaussianKernel(feats_train, feats_train, width) # two svr models: epsilon and nu svr_epsilon=LibSVR(svm_c, svr_param, kernel, labels, LIBSVR_EPSILON_SVR) svr_epsilon.train() svr_nu=LibSVR(svm_c, svr_param, kernel, labels, LIBSVR_NU_SVR) svr_nu.train() # predictions kernel.init(feats_train, feats_test) out1_epsilon=svr_epsilon.apply().get_labels() out2_epsilon=svr_epsilon.apply(feats_test).get_labels() out1_nu=svr_epsilon.apply().get_labels() out2_nu=svr_epsilon.apply(feats_test).get_labels() return out1_epsilon,out2_epsilon,out1_nu,out2_nu ,kernel
def regression_libsvr_modular (fm_train=traindat,fm_test=testdat,label_train=label_traindat,\ width=2.1,C=1,epsilon=1e-5,tube_epsilon=1e-2): from shogun.Features import Labels, RealFeatures from shogun.Kernel import GaussianKernel from shogun.Regression import LibSVR feats_train = RealFeatures(fm_train) feats_test = RealFeatures(fm_test) kernel = GaussianKernel(feats_train, feats_train, width) labels = Labels(label_train) svr = LibSVR(C, tube_epsilon, kernel, labels) svr.set_epsilon(epsilon) svr.train() kernel.init(feats_train, feats_test) out1 = svr.apply().get_labels() out2 = svr.apply(feats_test).get_labels() return out1, out2, kernel
def regression_libsvr_modular (fm_train=traindat,fm_test=testdat,label_train=label_traindat,\ width=2.1,C=1,epsilon=1e-5,tube_epsilon=1e-2): from shogun.Features import Labels, RealFeatures from shogun.Kernel import GaussianKernel from shogun.Regression import LibSVR feats_train=RealFeatures(fm_train) feats_test=RealFeatures(fm_test) kernel=GaussianKernel(feats_train, feats_train, width) labels=Labels(label_train) svr=LibSVR(C, tube_epsilon, kernel, labels) svr.set_epsilon(epsilon) svr.train() kernel.init(feats_train, feats_test) out1=svr.apply().get_labels() out2=svr.apply(feats_test).get_labels() return out1,out2,kernel
def libsvr (): print 'LibSVR' from shogun.Features import Labels, RealFeatures from shogun.Kernel import GaussianKernel from shogun.Regression import LibSVR feats_train=RealFeatures(fm_train) feats_test=RealFeatures(fm_test) width=2.1 kernel=GaussianKernel(feats_train, feats_train, width) C=1 epsilon=1e-5 tube_epsilon=1e-2 labels=Labels(label_train) svr=LibSVR(C, epsilon, kernel, labels) svr.set_tube_epsilon(tube_epsilon) svr.train() kernel.init(feats_train, feats_test) out1=svr.classify().get_labels() out2=svr.classify(feats_test).get_labels()
class SVR: svr = None kernel = None feats_train = None def __init__(self, traininput,testinput,traintarget,width=0.5,C=1,epsilon=0.1,tube_epsilon=0.1): train = matrix(traininput, dtype=float64) test = matrix(testinput, dtype=float64) label_train = array(traintarget, dtype=float64) self.feats_train=RealFeatures(train) feats_test=RealFeatures(test) trainstart = time.time() self.kernel=GaussianKernel(self.feats_train, self.feats_train, width) # self.kernel = PolyKernel(self.feats_train, self.feats_train, 2, False) labels=Labels(label_train) self.svr=LibSVR(C, epsilon, self.kernel, labels) self.svr.set_tube_epsilon(tube_epsilon) self.svr.train() trainend = time.time() print 'SVR train time' print trainend-trainstart def svr_req(self,inputs): feat_inputs = RealFeatures(matrix(inputs, dtype=float64)) teststart = time.time() self.kernel.init(self.feats_train, feat_inputs) out = self.svr.classify(feat_inputs).get_labels() # feat_input0 = RealFeatures(matrix(inputs[0], dtype=float64)) # feat_input1 = RealFeatures(matrix(inputs[1], dtype=float64)) # feat_input2 = RealFeatures(matrix(inputs[2], dtype=float64)) # feat_input3 = RealFeatures(matrix(inputs[3], dtype=float64)) # # out.append(self.svr.classify(feat_input0).get_labels()) # out.append(self.svr.classify(feat_input1).get_labels()) # out.append(self.svr.classify(feat_input2).get_labels()) # out.append(self.svr.classify(feat_input3).get_labels()) testend = time.time() print 'SVR query response ' print testend-teststart return out def calc_sme(self, testtarget, realtarget): result = 0.0 for i in range(len(testtarget)): result += pow((realtarget[i] - testtarget[i]),2) result /= len(testtarget) return result def calc_mape(self, testtarget, realtarget): result = 0.0 for i in range(len(testtarget)): result = abs(testtarget[i] - realtarget[i])/testtarget[i] return result/len(testtarget) def calc_rsqr(self, testtarget, realtarget): result_up = 0.0 result_down = 0.0 avg = sum(realtarget)/len(realtarget) for i in range(len(testtarget)): result_up += pow((realtarget[i] - testtarget[i]),2) result_down += (realtarget[i] - avg) return 1 - (result_up / result_down) def calc_pred(self, testtarget, realtarget, x): countx = 0.0 for i in range(len(testtarget)): if ((testtarget[i]/realtarget[i]) - 1 < (realtarget[i] * (1-x))): countx += 1 return countx / len(realtarget)