私はsklearnでGaussian Mixtureを実行しようと懸命に努力していますが、確実に機能しないため、何かが欠けていると思います。
私の元のデータは次のようになります。
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 関数でパラメーターを初期化したいのですが、データをフォーマットする方法がわかりません: (