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