Смесь склеарн.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