Среднее и ковариация условного распределения

У меня есть размерный массив 10000 X 22 (наблюдения x особенности), и я подгоняю гауссову смесь с одним компонентом следующим образом:

mixture = sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full').fit(my_array)

Затем я хочу вычислить среднее значение и ковариацию условного распределения первых двух признаков по остальным согласно уравнениям Бишопа по распознаванию образов и машинному обучению 2.81 и 2.82 на стр.87. Я делаю следующее:

covariances = mixture.covariances_ # shape = (1, 22, 22) where 1 is the 1 component I fit and 22x22 is the covariance matrix
means = mixture_component.means_ # shape = (1, 22), 22 means; one for each feautre
dependent_data = features[:, 0:2] #shape = (10000, 2)
conditional_data = features[:, 2:] #shape = (10000, 20)
mu_a = means[:, 0:2]  # Mu of the dependent variables
mu_b = means[:, 2:]  # Mu of the independent variables
cov_aa = covariances[0, 0:2, 0:2] # Cov of the dependent vars       
cov_bb = covariances[0, 2:, 2:]  # Cov of independent vars         
cov_ab = covariances[0, 0:2, 2:]                                  
cov_ba = covariances[0, 2:, 0:2]
A = (conditional_data.transpose() - mu_b.transpose())
B = cov_ab.dot(np.linalg.inv(cov_bb))
conditional_mu = mu_a + B.dot(A).transpose()
conditional_cov = cov_aa - cov_ab.dot(np.linalg.inv(cov_bb)).dot(cov_ba)

Моя проблема в том, что при вычислении conditional_mu и conditional_cov я получаю следующие формы:

conditional_mu.shape
(10000, 2)
conditional_cov.shape
(2,2)

Я ожидал, что форма conditional_mu должна быть (1,2), потому что я только хочу найти средства первых двух функций над остальными. Почему я получаю среднее значение для каждого наблюдения вместо этого?

1 ответ

Решение

Да, это ожидаемое измерение.

Для каждой точки данных независимая функция является фиксированной, а зависимые функции следуют нормальному распределению. Каждая точка данных дает различное среднее значение для зависимого объекта в зависимости от независимого объекта.

Поскольку у вас есть 10000 точек данных, у вас должно быть 10000 средств для зависимого объекта, каждое для одной точки данных.

Другие вопросы по тегам