Package PyML :: Package classifiers :: Module ridgeRegression
[frames] | no frames]

Source Code for Module PyML.classifiers.ridgeRegression

 1   
 2  import numpy 
 3   
 4  from PyML.classifiers.baseClassifiers import Classifier 
 5   
 6   
7 -class RidgeRegression (Classifier) :
8 """ 9 A kernel ridge regression classifier 10 11 :Keywords: 12 - `ridge` -- the ridge parameter [default: 1.0] 13 - `kernel` -- a kernel object [default: Linear] 14 15 """ 16 17 attributes = {'ridge' : 1.0, 18 'kernel' : None} 19
20 - def __init__(self, arg = None, **args) :
21 22 Classifier.__init__(self, arg, **args)
23
24 - def __repr__(self) :
25 26 rep = '<' + self.__class__.__name__ + ' instance>\n' 27 rep += 'ridge: %f\n' % self.ridge 28 29 return rep
30 31
32 - def train(self, data, **args) :
33 34 Classifier.train(self, data, **args) 35 self.data = data 36 if self.kernel is not None : 37 self.data.attachKernel(self.kernel) 38 39 Y = numpy.array(data.labels.Y) 40 Y = Y * 2 - 1 41 42 K = numpy.zeros((len(data), len(data)), numpy.float_) 43 print 'getting kernel matrix' 44 for i in range(len(data) - 1) : 45 for j in range(i, len(data)) : 46 K[i][j] = data.kernel.eval(data, i, j) 47 K[j][i] = K[i][j] 48 K = K + self.ridge * numpy.eye(len(data)) 49 print 'about to call numpy.linalg.inv' 50 self.alpha = numpy.dot(Y, numpy.linalg.inv(K)) 51 52 self.log.trainingTime = self.getTrainingTime() 53 print 'done training'
54 55 classify = Classifier.twoClassClassify 56
57 - def decisionFunc(self, data, i) :
58 59 f = 0.0 60 for j in range(len(self.data)) : 61 f += self.alpha[j] * self.data.kernel.eval(data, i, j, self.data) 62 63 return f
64