我想要用sklearn來做高斯混合,但我想我錯過了一些東西,因爲它確實無法工作。使用sklearn初始化Python中的高斯混合函數
我原來DATAS是這樣的:
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)。 我知道每種基因型的重量,每種基因型的對數比率的平均值和每種基因型的強度的平均值。
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]]
然後我從sklearn v0.18測試的混合物,功能GaussianMixture,也試圖從sklearn v0.17功能GaussianMixtureModel(我還沒有看到其中的差別,不知道用哪一個) 。
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功能,但我不明白我如何合成我的數據:(
您希望每次都有相同的結果嗎?這是你的問題嗎? – MMF
是的,我想每次都得到相同的結果,我相信如果我能修復初始參數,情況就會如此。 – Elysire
好的,看看我的答案然後;) – MMF