Пример #1
0
    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)
Пример #3
0
    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)]
Пример #4
0
 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)