Инициализируйте параметры гауссовой смеси в Python с помощью sklearn

Я очень стараюсь сделать Гауссовскую Микстуру со Sklearn, но я думаю, что что-то упустил, потому что это определенно не работает.

Мои оригинальные данные выглядят так:

Genotype LogRatio  Strength
AB       0.392805  10.625016
AA       1.922468  10.765716
AB       0.22074   10.405445
BB       -0.059783 10.625016

Я хочу сделать Гауссовскую смесь с 3 компонентами = 3 генотипами (AA|AB|BB). Я знаю вес каждого генотипа, среднее значение Log Ratio для каждого генотипа и среднее значение Strength для каждого генотипа.

wgts = [0.8,0.19,0.01]  # weight of AA,AB,BB
means = [[-0.5,9],[0.5,9],[1.5,9]] # mean(LogRatio), mean(Strenght) for AA,AB,BB 

Я сохраняю столбцы LogRatio и Strength и создаю массив NumPy.

datas = [[  0.392805  10.625016]
         [  1.922468  10.765716]
         [  0.22074   10.405445]
         [ -0.059783   9.798655]]

Затем я протестировал функцию Gaussian Mixture из смеси из sklearn v0.18 и попробовал также функцию GaussianMixtureModel из sklearn v0.17 (я до сих пор не вижу разницы и не знаю, какую использовать).

gmm = mixture.GMM(n_components=3) 
OR
gmm = mixture.GaussianMixture(n_components=3)

gmm.fit(datas)

colors = ['r' if i==0 else 'b' if i==1 else 'g' for i in gmm.predict(datas)]
ax = plt.gca()
ax.scatter(datas[:,0], datas[:,1], c=colors, alpha=0.8)
plt.show()

Это то, что я получаю, и это хороший результат, но он меняется каждый раз, потому что исходные параметры рассчитываются по-разному при каждом запуске.

Результаты кластеризации

Я хотел бы инициализировать свои параметры в функции gaussianMixture или GMM, но я не понимаю, как мне формировать мои данные: (

1 ответ

Решение

Можно контролировать случайность воспроизводимости результатов путем явного заполнения random_state генератор псевдослучайных чисел.

Вместо:

gmm = mixture.GaussianMixture(n_components=3)

Делать:

gmm = mixture.GaussianMixture(n_components=3, random_state=3)

random_state должен быть int: Я случайно установил его 3 но вы можете выбрать любое другое целое число.

При запуске несколько раз с одним и тем же random_state, вы получите те же результаты.

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