Example #1
0
    def test_kldiv(self):
        arr = scipy.random.random((21, 13))
        fm = fixmat.TestFixmatFactory(categories=[1, 2, 3],
                                      filenumbers=[1, 2, 3, 4, 5, 6],
                                      subjectindices=[1, 2, 3, 4, 5, 6],
                                      params={
                                          'pixels_per_degree': 10,
                                          'image_size': [100, 500]
                                      })

        kl = measures.kldiv(arr, arr)
        self.assertEqual(
            kl, 0, "KL Divergence between same distribution should be 0")
        kl = measures.kldiv(None, None, distp=fm, distq=fm, scale_factor=0.25)
        self.assertEqual(
            kl, 0, "KL Divergence between same distribution should be 0")
        fdm = fixmat.compute_fdm(fm)
        kl = measures.kldiv_model(fdm, fm)
        self.assertTrue(
            kl < 10**-13,
            "KL Divergence between same distribution should be almost 0")
        fm.x = np.array([])
        fm.y = np.array([])

        kl = measures.kldiv(None, None, distp=fm, distq=fm, scale_factor=0.25)
        self.assertTrue(np.isnan(kl))
Example #2
0
 def eval_fits(self):
     print('Fit Splines')
     spline_fit, hist = sb.fit2d(self.train_samples, 
             np.linspace(0,self.shape[0], self.shape[0]+1),
             np.linspace(0,self.shape[1], self.shape[1]+1))
     spline_kl = measures.kldiv(spline_fit, self.target)
     hist_kl = measures.kldiv(hist, self.target)
     try:
         print('Fit KDE')
         kde_est = gaussian_kde(self.train_samples)
         x,y = np.mgrid[0:self.shape[0], self.shape[1]]
         kde_fit = kde_est.evaluate((np.array(x), np.array(y)))
         kde_kl = measures.kldiv(kde_fit, self.target)
     except:
        kde_kl = np.nan
        print('LinAlgError') 
     print(spline_kl, hist_kl, kde_kl)
     return spline_kl, hist_kl, kde_kl
Example #3
0
 def eval_fits(self):
     print 'Fit Splines'
     spline_fit, hist = sb.fit2d(self.train_samples, 
             np.linspace(0,self.shape[0], self.shape[0]+1),
             np.linspace(0,self.shape[1], self.shape[1]+1))
     spline_kl = measures.kldiv(spline_fit, self.target)
     hist_kl = measures.kldiv(hist, self.target)
     try:
         print 'Fit KDE'
         kde_est = gaussian_kde(self.train_samples)
         x,y = np.mgrid[0:self.shape[0], self.shape[1]]
         kde_fit = kde_est.evaluate((np.array(x), np.array(y)))
         kde_kl = measures.kldiv(kde_fit, self.target)
     except:
        kde_kl = np.nan
        print 'LinAlgError' 
     print spline_kl, hist_kl, kde_kl
     return spline_kl, hist_kl, kde_kl
Example #4
0
 def test_kldiv(self):
     arr = scipy.random.random((21,13))
     fm = fixmat.TestFixmatFactory(categories = [1,2,3], 
             filenumbers = [1,2,3,4,5,6],
             subjectindices = [1, 2, 3, 4, 5, 6],
             params = {'pixels_per_degree':10, 'image_size':[100,500]})
     
     kl = measures.kldiv(arr, arr)
     self.assertEqual(kl, 0, 
             "KL Divergence between same distribution should be 0")
     kl = measures.kldiv(None, None, distp = fm, distq = fm, scale_factor = 0.25)
     self.assertEqual(kl, 0, 
             "KL Divergence between same distribution should be 0")
     fdm = fixmat.compute_fdm(fm)
     kl = measures.kldiv_model(fdm, fm)
     self.assertTrue(kl < 10**-13, 
             "KL Divergence between same distribution should be almost 0")
     fm.x = np.array([])
     fm.y = np.array([])
     
     kl = measures.kldiv(None, None, distp = fm, distq = fm, scale_factor = 0.25)
     self.assertTrue(np.isnan(kl))