bestLearner = learner.getBestLearner(cvGrid, paramDict, trainX, trainY) predY = bestLearner.predict(testX) meanErrors[methodInd] += bestLearner.getMetricMethod()(testY, predY) #Compute norms tempMeanNorms = numpy.zeros(numParams) tempMeanSVs = numpy.zeros(numParams) for s, C in enumerate(Cs): for trainInds, testInds in idx: validX = trainX[trainInds, :] validY = trainY[trainInds] learner.setC(C) learner.learnModel(validX, validY) tempMeanNorms[s] += learner.weightNorm() tempMeanSVs[s] += learner.model.support_.shape[0] learner.learnModel(trainX, trainY) testMeanNorms[s] = learner.weightNorm() testMeanSVs[s] += learner.model.support_.shape[0] tempMeanNorms /= float(folds) meanNorms += tempMeanNorms tempMeanSVs /= float(folds) meanSVs+= tempMeanSVs numRealisations = float(numRealisations) meanCvGrid /= numRealisations
#errors = learner.parallelPenaltyGrid(validX, validY, testX, testY, paramDict, computeTestError) #errors = numpy.squeeze(errors) errors = numpy.zeros((Cs.shape[0], gammas.shape[0])) norms = numpy.zeros((Cs.shape[0], gammas.shape[0])) for i, C in enumerate(Cs): for j, gamma in enumerate(gammas): learner.setEpsilon(epsilons[0]) learner.setC(C) learner.setGamma(gamma) learner.learnModel(validX, validY) predY = learner.predict(testX) errors[i, j] = Evaluator.meanAbsError(predY, testY) norms[i, j] = learner.weightNorm() for i in range(gammas.shape[0]): plt.figure(i) plt.plot(numpy.log(Cs), errors[:, i], label=str(sampleSize)) plt.legend(loc="upper left") plt.xlabel("C") plt.ylabel("Error") plt.figure(i+gammas.shape[0]) plt.plot(norms[:, i], errors[:, i], label=str(sampleSize)) plt.legend(loc="upper left") plt.xlabel("Norm") plt.ylabel("Error")