12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #! /usr/bin/python
- import numpy
- import pickle
- import sys
- import os
- sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),os.pardir))
- import helperFunctions
- import activeLearningWlinGPprototype
- class Classifier(activeLearningWlinGPprototype.ClassifierPrototype):
- def __init__(self,
- sigmaN = 0.00178,
- useDiversity = False,
- useDensity = False,
- useVariance = False,
- loNoise = True,
- configFile=None):
- activeLearningWlinGPprototype.ClassifierPrototype.__init__(self, sigmaN=sigmaN, configFile=configFile)
- self.useDiversity = helperFunctions.getConfig(configFile, 'activeLearning', 'useDiversity', useDiversity, 'bool', True)
- self.useVariance = helperFunctions.getConfig(configFile, 'activeLearning', 'useVariance', useVariance, 'bool', True)
- self.useDensity = helperFunctions.getConfig(configFile, 'activeLearning', 'useDensity', useDensity, 'bool', True)
- self.loNoise = helperFunctions.getConfig(configFile, 'activeLearning', 'loNoise', loNoise, 'bool', True)
- def getDensity(self, sim):
- return numpy.sum(sim, axis=1) / float(sim.shape[1])
- def getDiversity(self, sim):
- return 1.0 / numpy.max(sim, axis=1)
- # x.shape = (feat dim, number of samples)
- def calcAlScores(self, x):
- loNoise = (self.yUni == -1).any() and self.loNoise
- sortedScores = numpy.sort(self.infer(x, loNoise), axis=1)
- alScores = numpy.absolute(sortedScores[:,-1] - sortedScores[:,-2])*(-1.0)
- sim = None
- if self.useDensity:
- sim = numpy.dot(x, numpy.append(self.X, x, axis=0).T)
- density = self.getDensity(sim)
- alScores = numpy.multiply(alScores, density)
- elif self.useDiversity:
- if sim is None:
- sim = numpy.dot(x, self.X.T)
- diversity = self.getDiversity(sim)
- else:
- diversity = self.getDiversity(sim[:,:self.X.shape[0]])
- alScores = numpy.multiply(alScores, diversity)
- elif self.useVariance:
- variance = self.calcSigmaF(x)
- alScores = numpy.multiply(alScores, variance)
- return alScores
|