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))
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
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
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))