Пример #1
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)

        # this should be the last command in the train function
        # if you redefine the "test" function you can follow the code in
        # assess.test to save the testingTime
        self.log.trainingTime = self.getTrainingTime()
Пример #2
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        self.oneClass = OneClassSVM(nu = self.nu, eps = self.eps)
        self.oneClass.train(data)
        self.data = data
        print 'computing connected components'
        self.clusters = self.connectedComponents()
Пример #3
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        self.numClasses = data.labels.numClasses
        if data.isWrapper :
            self.knnc = knn.KNN(self.k)
            self.knnc.train(data.castToBase())
        self.data = data

        self.log.trainingTime = self.getTrainingTime()
Пример #4
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        if self.labels.numClasses != 2 :
            raise ValueError, 'number of classes is not 2'

        if self.mode == 'cv' :
            self.classifier.train(data, **args)

        numTries = 0
        maxNumTries = 5
        success = False
        while not success and numTries < maxNumTries :
            numTries += 1
            if self.mode == 'cv' :
                fittingData = data
                r = self.classifier.stratifiedCV(data, self.numFolds)
            elif self.mode == 'holdOut' :
                fittingData, trainingData = sample.split(data, self.fittingFraction)
                self.classifier.train(trainingData, **args)
                r = self.classifier.test(fittingData)
            else :
                raise ValueError, 'unknown mode for Platt'
	    self.labels = self.classifier.labels

        prior1 = fittingData.labels.classSize[1]
        prior0 = fittingData.labels.classSize[0]
        out = numpy.array(r.Y, numpy.float_)
        try :
            self.fit_A_B(prior1, prior0, out, r.decisionFunc, r.givenY)		
            success = True
        except :
            pass

        if not success :
            print 'platt not successful'
            self.A = None
            self.B = None
            results = self.classifier.test(data)
            maxPos = 1e-3
            minNeg = -1e-3
            for f in results.decisionFunc :
                if f > 0 :
                    if f > maxPos :
                        maxPos = f
                elif f < 0 :
                    if f < minNeg :
                        minNeg = f
            self.maxPos = maxPos
            self.minNeg = abs(minNeg)
        
        self.log.trainingTime = self.getTrainingTime()
Пример #5
0
    def train(self, data, **args):

        Classifier.train(self, data, **args)
        self.data = data

        if self.kernel is not None:
            self.data.attachKernel(self.kernel)
        if data.kernel.__class__.__name__ == 'Linear':
            self.train_linear(data)
        else:
            self.train_nonlinear(data)

        self.log.trainingTime = self.getTrainingTime()
Пример #6
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        self.data = data
        
        if self.kernel is not None :
            self.data.attachKernel(self.kernel)
        if data.kernel.__class__.__name__ == 'Linear' :
            self.train_linear(data)
        else :
            self.train_nonlinear(data)
            
        self.log.trainingTime = self.getTrainingTime()
Пример #7
0
    def train(self, data, **args):
        """
        train an SVM
        """

        if data.__class__.__name__ in containersNotSupported:
            raise ValueError, 'convert your data into one of the C++ containers'

        Classifier.train(self, data, **args)
        if self.kernel is not None:
            data.attachKernel(self.kernel)

        # libsvm optimizer can only be used with vector data:
        if (not data.isVector) and self.optimizer == 'libsvm':
            self.optimizer = 'mysmo'

        isPrimal = False
        if 'alpha' in args:
            print 'loading model'
            alpha = args['alpha']
            b = args['b']
            svID = args['svID']
        elif self.optimizer == 'libsvm':
            alpha, b, svID = self.trainLibsvm(data, **args)
        elif self.optimizer == 'liblinear':
            isPrimal = True
            w, b = self.trainLiblinear(data, **args)
        elif self.optimizer == 'gist':
            alpha, b, svID = self.trainGist(data, **args)
        elif self.optimizer == 'gradient':
            alpha, b, svID = self.trainGradient(data, **args)
        else:
            alpha, b, svID = self.trainMySMO(data, **args)

        if isPrimal:
            self.model = self.modelDispatcher(data, w=w, b=b)
        else:
            self.model = self.modelDispatcher(data,
                                              svID=svID,
                                              alpha=alpha,
                                              b=b)

        self.trained = True
        if not isPrimal:
            self.log.numSV = len(alpha)
        self.log.trainingTime = self.getTrainingTime()
Пример #8
0
    def train(self, data, **args) :

        """
        train an SVM
        """
    
        if data.__class__.__name__ in containersNotSupported :
            raise ValueError, 'convert your data into one of the C++ containers'

        Classifier.train(self, data, **args)
        if self.kernel is not None :
            data.attachKernel(self.kernel)

        # libsvm optimizer can only be used with vector data:
        if (not data.isVector) and self.optimizer == 'libsvm' :
            self.optimizer = 'mysmo'

        isPrimal = False
        if 'alpha' in args :
            print 'loading model'
            alpha = args['alpha']
            b = args['b']
            svID = args['svID']
        elif self.optimizer == 'libsvm' :
            alpha,b,svID = self.trainLibsvm(data, **args)
        elif self.optimizer == 'liblinear' :
            #isPrimal = True
            #w, b = self.trainLiblinear(data, **args)
            alpha,b,svID = self.trainLiblinear(data, **args)
        elif self.optimizer == 'gist' :
            alpha,b,svID = self.trainGist(data, **args)
        elif self.optimizer == 'gradient' :
            alpha,b,svID = self.trainGradient(data, **args)            
        else :
            alpha,b,svID = self.trainMySMO(data, **args)

        if isPrimal :
            self.model = modelDispatcher(data, w=w, b=b)
        else :
            self.model = modelDispatcher(data, svID=svID, alpha=alpha, b=b)

        self.trained = True
        if not isPrimal :
            self.log.numSV = len(alpha)
        self.log.trainingTime = self.getTrainingTime()
Пример #9
0
    def train(self, data, **args):

        """
        train an SVM
        """

        if data.__class__.__name__ in containersNotSupported:
            raise ValueError, "convert your data into one of the C++ containers"

        Classifier.train(self, data, **args)
        if self.kernel is not None:
            data.attachKernel(self.kernel)

        # libsvm optimizer can only be used with vector data:
        if (not data.isVector) and self.optimizer == "libsvm":
            self.optimizer = "mysmo"

        isPrimal = False
        if "alpha" in args:
            print "loading model"
            alpha = args["alpha"]
            b = args["b"]
            svID = args["svID"]
        elif self.optimizer == "libsvm":
            alpha, b, svID = self.trainLibsvm(data, **args)
        elif self.optimizer == "liblinear":
            isPrimal = True
            w, b = self.trainLiblinear(data, **args)
        elif self.optimizer == "gist":
            alpha, b, svID = self.trainGist(data, **args)
        elif self.optimizer == "gradient":
            alpha, b, svID = self.trainGradient(data, **args)
        else:
            alpha, b, svID = self.trainMySMO(data, **args)

        if isPrimal:
            self.model = self.modelDispatcher(data, w=w, b=b)
        else:
            self.model = self.modelDispatcher(data, svID=svID, alpha=alpha, b=b)

        self.trained = True
        if not isPrimal:
            self.log.numSV = len(alpha)
        self.log.trainingTime = self.getTrainingTime()
Пример #10
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        self.featureID = data.featureID[:]
        
        if data.numFeatures * len(data) > 1.1 * self.maxSize :
            self.train2(data, **args)
        
        self.cleanup()
        # the location of the output from training:
        #self.trainingDirectory = tempfile.mkdtemp()
        self.trainingDirectory = '/Users/asa/temp'
        print 'RF directory:', self.trainingDirectory
        self.trainingExecutable = os.path.join(self.trainingDirectory, 'rf')
        self.trainingCode = os.path.join(self.trainingDirectory, 'rf.f')
        #os.mkdir(self.trainingDirectory)
        writeData(data)
        writeCode(self, self.trainingCode, self.trainingExecutable, data)
        dir = os.getcwd()
        os.chdir(self.trainingDirectory)
        os.system('./rf')
        os.chdir(dir)
Пример #11
0
    def train(self, data, **args):

        Classifier.train(self, data, **args)
        self.data = data
        if self.kernel is not None:
            self.data.attachKernel(self.kernel)

        Y = numpy.array(data.labels.Y)
        Y = Y * 2 - 1

        K = numpy.zeros((len(data), len(data)), numpy.float_)
        print 'getting kernel matrix'
        for i in range(len(data) - 1):
            for j in range(i, len(data)):
                K[i][j] = data.kernel.eval(data, i, j)
                K[j][i] = K[i][j]
        K = K + self.ridge * numpy.eye(len(data))
        print 'about to call numpy.linalg.inv'
        self.alpha = numpy.dot(Y, numpy.linalg.inv(K))

        self.log.trainingTime = self.getTrainingTime()
        print 'done training'
Пример #12
0
    def train(self, data, **args):

        Classifier.train(self, data, **args)
        self.featureID = data.featureID[:]

        if data.numFeatures * len(data) > 1.1 * self.maxSize:
            self.train2(data, **args)

        self.cleanup()
        # the location of the output from training:
        #self.trainingDirectory = tempfile.mkdtemp()
        self.trainingDirectory = '/Users/asa/temp'
        print 'RF directory:', self.trainingDirectory
        self.trainingExecutable = os.path.join(self.trainingDirectory, 'rf')
        self.trainingCode = os.path.join(self.trainingDirectory, 'rf.f')
        #os.mkdir(self.trainingDirectory)
        writeData(data)
        writeCode(self, self.trainingCode, self.trainingExecutable, data)
        dir = os.getcwd()
        os.chdir(self.trainingDirectory)
        os.system('./rf')
        os.chdir(dir)
Пример #13
0
    def train(self, data, **args) :

        Classifier.train(self, data, **args)
        self.data = data
        if self.kernel is not None :
            self.data.attachKernel(self.kernel)
            
        Y = numpy.array(data.labels.Y)
        Y = Y * 2 - 1

        K = numpy.zeros((len(data), len(data)), numpy.float_)
        print 'getting kernel matrix'
        for i in range(len(data) - 1) :
            for j in range(i, len(data)) :
                K[i][j] = data.kernel.eval(data, i, j)
                K[j][i] = K[i][j]
        K = K + self.ridge * numpy.eye(len(data))
        print 'about to call numpy.linalg.inv'
        self.alpha = numpy.dot(Y, numpy.linalg.inv(K))

        self.log.trainingTime = self.getTrainingTime()
        print 'done training'