Смесь склеарн.GMM в питоне с использованием одномерного GMM

В R у mclust есть аргумент "modelNames", в котором вы можете определить, какую модель реализовать. Я хочу сделать одномерное моделирование, которое также modelNames <- 'V' в mclust под смесью.GMM в питоне. Тем не менее, единственное, что я могу настроить, это covariance_type. Тем не менее, когда я запускаю те же данные, используя R и mixture.GMM под sklearnЯ получаю разные фитинги, несмотря на то же количество установленных компонентов. Что я мог изменить в mixture.GMM указать, что я использую одномерную переменную дисперсию?

код mclust:

function(x){Mclust(ma78[x,],G=2,modelNames="V",verbose=FALSE)}

GMM код:

gmm = GMM(n_components = 2).fit(data)

2 ответа

При одномерных данных ковариация может быть либо одинаковой, либо уникальной (переменной). С Mclust эти варианты modelNames = "E" или же "V"соответственно.

С sklearnони кажутся covariance_type = "tied" или же "full", Возможно, что-то подобное для модели переменной гауссовой смеси

gmm = mixture.GaussianMixture(n_components = 2, covariance_type='full').fit(data)

Даже используя Mclust или же sklearn в одиночку можно привести пример того, что вы не можете получить одинаковые значения параметров для разных прогонов - это потому, что оценки могут зависеть от начальных значений. Один из способов избежать этого - использовать большее количество запусков, если такая опция доступна.

found the answer on stats.stackexchange. The only thing you have to do is to reshape your data data.reshape(-1, 1) before you pass it into sklearn.mixture.GaussianMixture

Andreas

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