我正在尝试使用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)。 我知道每个基因型的权重,对数比率的平均值和强度的平均值。
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
我将保留HTML标签并翻译如下:
我保留列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()
这是我得到的结果,虽然很好,但由于每次运行时初始参数的计算方式不同,因此结果会发生变化。
我想在高斯混合或GMM函数中初始化我的参数,但我不知道如何格式化我的数据: