def _compute_gamma_auto(self, X_train): # mu = mean_riemann(X_train) mu = mean_logeuclid(X_train) sigma = 0 for matrix in X_train: sigma += np.power(distance_logeuclid(matrix, mu), self.p) self.gamma = len(X_train) / sigma
def test_distance_wrapper_random(met, gfunc, get_covmats): n_trials, n_channels = 2, 5 covmats = get_covmats(n_trials, n_channels) A, B = covmats[0], covmats[1] if gfunc is geodesic_euclid: Ctrue = mean_euclid(covmats) elif gfunc is geodesic_logeuclid: Ctrue = mean_logeuclid(covmats) elif gfunc is geodesic_riemann: Ctrue = mean_riemann(covmats) assert geodesic(A, B, 0.5, metric=met) == approx(Ctrue)
def cal_riem_means(X1, X2, tORs, rType): # find the mean of the covariances in X # two options to use: rType == riem or rType == log-eucl X = np.concatenate((X1, X2), axis=0) reg_param = cal_shrinkage(X, tORs) W1 = cal_covariance(X1, tORs, reg_param) W2 = cal_covariance(X2, tORs, reg_param) # find the riemannian means of the covariances if rType == 'riem': C1_mean = mr.mean_riemann(W1) C2_mean = mr.mean_riemann(W2) elif rType == 'log-eucl': C1_mean = mr.mean_logeuclid(W1) C2_mean = mr.mean_logeuclid(W2) return np.array([C1_mean, C2_mean]), reg_param
def test_random_mat(self, geodesic_func, get_covmats): n_trials, n_channels = 2, 5 covmats = get_covmats(n_trials, n_channels) A, B = covmats[0], covmats[1] if geodesic_func is geodesic_euclid: Ctrue = mean_euclid(covmats) elif geodesic_func is geodesic_logeuclid: Ctrue = mean_logeuclid(covmats) elif geodesic_func is geodesic_riemann: Ctrue = mean_riemann(covmats) self.geodesic_0(geodesic_func, A, B) self.geodesic_1(geodesic_func, A, B) self.geodesic_middle(geodesic_func, A, B, Ctrue)
def test_logeuclid_mean(): """Test the logeuclidean mean""" covmats, diags, A = generate_cov(100, 3) C = mean_logeuclid(covmats)
def test_mean_covariance_logeuclid(): """Test mean_covariance for logeuclid metric""" covmats, diags, A = generate_cov(100, 3) C = mean_covariance(covmats, metric='logeuclid') Ctrue = mean_logeuclid(covmats) assert_array_equal(C, Ctrue)
def test_mean_covariance_logeuclid(): """Test mean_covariance for logeuclid metric""" covmats = generate_cov(100, 3) C = mean_covariance(covmats, metric='logeuclid') Ctrue = mean_logeuclid(covmats) assert_array_equal(C, Ctrue)
def test_logeuclid_mean(): """Test the logeuclidean mean""" covmats = generate_cov(100, 3) C = mean_logeuclid(covmats)