def getSetup(learnerName, dataDir, outputDir, numProcesses): if learnerName=="SVM": learner = LibSVM(kernel='gaussian', type="C_SVC", processes=numProcesses) loadMethod = ModelSelectUtils.loadRatschDataset dataDir += "benchmark/" outputDir += "classification/" + learnerName + "/" paramDict = {} paramDict["setC"] = learner.getCs() paramDict["setGamma"] = learner.getGammas() elif learnerName=="SVR": learner = LibSVM(kernel='gaussian', type="Epsilon_SVR", processes=numProcesses) learner.normModelSelect = True loadMethod = ModelSelectUtils.loadRegressDataset dataDir += "regression/" outputDir += "regression/" + learnerName + "/" paramDict = {} paramDict["setC"] = 2.0**numpy.arange(-10, 14, 2, dtype=numpy.float) paramDict["setGamma"] = 2.0**numpy.arange(-10, 4, 2, dtype=numpy.float) paramDict["setEpsilon"] = learner.getEpsilons() elif learnerName=="CART": learner = DecisionTreeLearner(criterion="mse", maxDepth=30, minSplit=1, pruneType="CART", processes=numProcesses) learner.setChunkSize(2) loadMethod = ModelSelectUtils.loadRegressDataset dataDir += "regression/" outputDir += "regression/" + learnerName + "/" paramDict = {} paramDict["setGamma"] = numpy.array(numpy.round(2**numpy.arange(1, 7.5, 0.5)-1), dtype=numpy.int) else: raise ValueError("Unknown learnerName: " + learnerName) return learner, loadMethod, dataDir, outputDir, paramDict
def profileParallelPen(self): learner = LibSVM(processes=8) learner.setChunkSize(2) numExamples = 10000 numFeatures = 10 X = numpy.random.rand(numExamples, numFeatures) Y = numpy.array(numpy.random.rand(numExamples) < 0.1, numpy.int)*2-1 Cvs = [self.folds-1] def run(): for i in range(2): print("Iteration " + str(i)) idx = Sampling.crossValidation(self.folds, numExamples) learner.parallelPen(X, Y, idx, self.paramDict, Cvs) ProfileUtils.profile('run()', globals(), locals())
def profileParallelPen(self): learner = LibSVM(processes=8) learner.setChunkSize(2) numExamples = 10000 numFeatures = 10 X = numpy.random.rand(numExamples, numFeatures) Y = numpy.array(numpy.random.rand(numExamples) < 0.1, numpy.int) * 2 - 1 Cvs = [self.folds - 1] def run(): for i in range(2): print("Iteration " + str(i)) idx = Sampling.crossValidation(self.folds, numExamples) learner.parallelPen(X, Y, idx, self.paramDict, Cvs) ProfileUtils.profile('run()', globals(), locals())
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) numpy.seterr(all="raise") numpy.random.seed(21) dataDir = PathDefaults.getDataDir() dataDir += "modelPenalisation/regression/" outputDir = PathDefaults.getOutputDir() + "modelPenalisation/regression/SVR/" figInd = 0 loadMethod = ModelSelectUtils.loadRegressDataset datasets = ModelSelectUtils.getRegressionDatasets(True) numProcesses = multiprocessing.cpu_count() learner = LibSVM(kernel="rbf", processes=numProcesses, type="Epsilon_SVR") learner.setChunkSize(3) Cs = 2.0**numpy.arange(-10, 14, 2, dtype=numpy.float) gammas = 2.0**numpy.arange(-10, 4, 2, dtype=numpy.float) epsilons = learner.getEpsilons() gammaInd = 3 gamma = gammas[gammaInd] learner.setGamma(gamma) epsilonInd = 0 epsilon = epsilons[epsilonInd] learner.setEpsilon(epsilon) learner.normModelSelect = True paramDict = {}