我想要用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