def tune_params(self, l1=None, l2=None): """Estimate parameters l1 and l2 based on AIC""" if l1 == None: l1 = numpy.linspace(numpy.percentile(abs(self.data), 25), numpy.percentile(abs(self.data), 50), 4) if l2 == None: l2 = numpy.linspace(.1, .5, 3) if self.h == None: raise Exception( "Need to either provide Gaussian kernel radius, h, or estimate this using the fit_radius method" ) if self.C_ == None: self.est_S() AIC_results = numpy.zeros((len(l1), len(l2))) for i in range(len(l1)): for j in range(len(l2)): a, b, c, AIC_results[i, j] = fitSINGLE(S=self.C_, data=self.data, l1=l1[i], l2=l2[j], pen_type=self.pen_type, parallel=self.parallel) index = numpy.argmin(AIC_results) self.l1 = l1[index % len(l1)] self.l2 = l2[index % len(l2)]
def fit(self): #C = get_kern_cov(self.data, radius=self.h) #C_ = [None]*len(C) #for i in range(len(C)): #C_[i] = C[i,:,:] if self.C_==None: self.est_S() self.P, a, self.iter_, self.AIC = fitSINGLE(S=self.C_, data=self.data, l1=self.l1, l2=self.l2, parallel=self.parallel, max_iter=self.max_iter, tol=self.tol) # fit and normalise: if self.norm: for i in range(len(self.P)): d = numpy.sqrt(numpy.diagonal(self.P[i,:,:])) self.P[i,:,:] /= numpy.outer(d,d)
def tune_params(self, l1=None, l2=None): """Estimate parameters l1 and l2 based on AIC""" if l1==None: l1 = numpy.linspace(numpy.percentile(abs(self.data), 25), numpy.percentile(abs(self.data), 50), 4) if l2==None: l2 = numpy.linspace(.1, .5, 3) if self.h==None: raise Exception("Need to either provide Gaussian kernel radius, h, or estimate this using the fit_radius method") if self.C_==None: self.est_S() AIC_results = numpy.zeros((len(l1),len(l2))) for i in range(len(l1)): for j in range(len(l2)): a,b,c,AIC_results[i,j] = fitSINGLE(S=self.C_, data=self.data, l1=l1[i], l2=l2[j], pen_type=self.pen_type, parallel=self.parallel) index = numpy.argmin(AIC_results) self.l1 = l1[ index % len(l1)] self.l2 = l2[ index % len(l2)]
def fit(self): #C = get_kern_cov(self.data, radius=self.h) #C_ = [None]*len(C) #for i in range(len(C)): #C_[i] = C[i,:,:] if self.C_ == None: self.est_S() self.P, a, self.iter_, self.AIC = fitSINGLE(S=self.C_, data=self.data, l1=self.l1, l2=self.l2, pen_type=self.pen_type, parallel=self.parallel, Approx=self.Approx, max_iter=self.max_iter, tol=self.tol) # fit and normalise: if self.norm: for i in range(len(self.P)): d = numpy.sqrt(numpy.diagonal(self.P[i, :, :])) self.P[i, :, :] /= numpy.outer(d, d)