def __train__(self, data, labels): l = labels.reshape((-1,1)) self.__trainingData__ = data self.__trainingLabels__ = l N = len(l) H = zeros((N,N)) for i in range(N): for j in range(N): H[i,j] = self.__trainingLabels__[i]*self.__trainingLabels__[j]*self.__kernelFunc__(self.__trainingData__[i],self.__trainingData__[j]) f = -1.0*ones(labels.shape) lb = zeros(labels.shape) ub = self.C * ones(labels.shape) Aeq = labels beq = 0.0 suppressOut = True if suppressOut: devnull = open('/dev/null', 'w') oldstdout_fno = os.dup(sys.stdout.fileno()) os.dup2(devnull.fileno(), 1) p = QP(matrix(H),f.tolist(),lb=lb.tolist(),ub=ub.tolist(),Aeq=Aeq.tolist(),beq=beq) r = p.solve('cvxopt_qp') if suppressOut: os.dup2(oldstdout_fno, 1) lim = 1e-4 r.xf[where(abs(r.xf)<lim)] = 0 self.__lambdas__ = r.xf nonzeroindexes = where(r.xf>lim)[0] # l1 = nonzeroindexes[0] # self.w0 = 1.0/labels[l1]-dot(self.w,data[l1]) self.numSupportVectors = len(nonzeroindexes)
def train(self, data, labels): l = labels.reshape((-1,1)) xy = data * l H = dot(xy,transpose(xy)) f = -1.0*ones(labels.shape) lb = zeros(labels.shape) ub = self.C * ones(labels.shape) Aeq = labels beq = 0.0 p = QP(matrix(H),f.tolist(),lb=lb.tolist(),ub=ub.tolist(),Aeq=Aeq.tolist(),beq=beq) r = p.solve('cvxopt_qp') r.xf[where(r.xf<1e-3)] = 0 self.w = dot(r.xf*labels,data) nonzeroindexes = where(r.xf>1e-4)[0] l1 = nonzeroindexes[0] self.w0 = 1.0/labels[l1]-dot(self.w,data[l1]) self.numSupportVectors = len(nonzeroindexes)
def __train__(self, data, labels): l = labels.reshape((-1,1)) xy = data * l H = dot(xy,transpose(xy)) f = -1.0*ones(labels.shape) lb = zeros(labels.shape) ub = self.C * ones(labels.shape) Aeq = labels beq = 0.0 devnull = open('/dev/null', 'w') oldstdout_fno = os.dup(sys.stdout.fileno()) os.dup2(devnull.fileno(), 1) p = QP(matrix(H),f.tolist(),lb=lb.tolist(),ub=ub.tolist(),Aeq=Aeq.tolist(),beq=beq) r = p.solve('cvxopt_qp') os.dup2(oldstdout_fno, 1) lim = 1e-4 r.xf[where(r.xf<lim)] = 0 self.w = dot(r.xf*labels,data) nonzeroindexes = where(r.xf>lim)[0] l1 = nonzeroindexes[0] self.w0 = 1.0/labels[l1]-dot(self.w,data[l1]) self.numSupportVectors = len(nonzeroindexes)