def testParallelPenaltyGridRbf(self): svm = self.svm svm.setKernel("gaussian") trainX = self.X[0:40, :] trainY = self.y[0:40] idealPenalties = svm.parallelPenaltyGridRbf(trainX, trainY, self.X, self.y) idealPenalties2 = numpy.zeros((svm.Cs.shape[0], svm.gammas.shape[0])) idealPenalties3 = numpy.zeros((svm.Cs.shape[0], svm.gammas.shape[0])) for i in range(svm.Cs.shape[0]): C = svm.Cs[i] for j in range(svm.gammas.shape[0]): gamma = svm.gammas[j] svm.setGamma(gamma) svm.setC(C) svm.learnModel(trainX, trainY) predY = svm.predict(self.X) predTrainY = svm.predict(trainX) penalty = Evaluator.binaryError( predY, self.y) - Evaluator.binaryError(predTrainY, trainY) idealPenalties2[i, j] = penalty args = (trainX, trainY, self.X, self.y, svm) idealPenalties3[i, j] = computeIdealPenalty(args) tol = 10**-6 self.assertTrue( numpy.linalg.norm(idealPenalties2.T - idealPenalties) < tol)
def testParallelPenaltyGrid(self): svm = self.svm svm.setKernel("gaussian") trainX = self.X[0:40, :] trainY = self.y[0:40] paramDict = {} paramDict["setC"] = svm.getCs() paramDict["setGamma"] = svm.getGammas() idealPenalties = svm.parallelPenaltyGrid(trainX, trainY, self.X, self.y, paramDict) idealPenalties2 = numpy.zeros((svm.Cs.shape[0], svm.gammas.shape[0])) idealPenalties3 = numpy.zeros((svm.Cs.shape[0], svm.gammas.shape[0])) for i in range(svm.Cs.shape[0]): C = svm.Cs[i] for j in range(svm.gammas.shape[0]): gamma = svm.gammas[j] svm.setGamma(gamma) svm.setC(C) svm.learnModel(trainX, trainY) predY = svm.predict(self.X) predTrainY = svm.predict(trainX) penalty = Evaluator.binaryError(predY, self.y) - Evaluator.binaryError(predTrainY, trainY) idealPenalties2[i, j] = penalty args = (trainX, trainY, self.X, self.y, svm) idealPenalties3[i, j] = computeIdealPenalty(args) tol = 10**-6 self.assertTrue(numpy.linalg.norm(idealPenalties2.T - idealPenalties) < tol)
def testComputeIdealPenalty(self): C = 10.0 gamma = 0.5 svm = LibSVM("gaussian", gamma, C) args = (self.X, self.y, self.X, self.y, svm) error = computeIdealPenalty(args)