Инициализируйте параметры гауссовой смеси в 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
, вы получите те же результаты.