Я смотрю на реализацию модели GaussianMixture в sklearn.mixture. Насколько я понимаю, функция predict_proba
дает вероятности того, что выборка будет принадлежать каждому гауссову компоненту (P (M \ D)). Пример:
from sklearn import datasets
from sklearn.mixture import GaussianMixture
# load the iris dataset
iris = datasets.load_iris()
# select first two columns
X = iris.data[:, :2]
# turn it into a dataframe
d = pd.DataFrame(X)
# Build model, 3 classes
gmm = GaussianMixture(n_components = 3)
# Fit the GMM model for the dataset
gmm.fit(d)
# Compute the probablities of a sample to belong to a component
proba_sample1 = gmm.predict_proba(d.iloc[0].values.reshape(1,-1))
proba_sample1
Out[0]: array([[7.09016312e-04, 9.99204553e-01, 8.64310149e-05]])
Исходя из результатов, я понимаю, что точка принадлежит второму компоненту (максимальное значение).
Но что я хочу вычислить, так это вероятность выборки при вся смесь. Есть ли в sklearn.mixture функция для вычисления этого? Если нет, то как его вычислить?
Я думаю, что это сумма его вероятности для каждого из компонентов, умноженная на вес каждого гауссова компонента (P = сумма [P (D \ M) P ( M)])