使用 sklearn 在 Python 中初始化参数高斯混合
Initialize Parameters Gaussian Mixture in Python with 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) 的高斯混合。
我知道每个基因型的权重,每个基因型的对数比平均值和每个基因型的强度平均值。
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 的 mixture 函数 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 函数中初始化我的参数,但我不明白我必须如何格式化我的数据:(
可以通过显式播种 random_state
伪随机数生成器来控制结果的可重复性的随机性。
而不是:
gmm = mixture.GaussianMixture(n_components=3)
做:
gmm = mixture.GaussianMixture(n_components=3, random_state=3)
random_state
必须是 int
:我随机将其设置为 3
但您可以选择任何其他整数。
当运行多次使用相同的random_state
时,你会得到相同的结果。
我正在非常努力地使用 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
我保留 LogRatio 和 Strength 列并创建一个 NumPy 数组。
datas = [[ 0.392805 10.625016]
[ 1.922468 10.765716]
[ 0.22074 10.405445]
[ -0.059783 9.798655]]
然后我测试了来自 sklearn v0.18 的 mixture 函数 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 函数中初始化我的参数,但我不明白我必须如何格式化我的数据:(
可以通过显式播种 random_state
伪随机数生成器来控制结果的可重复性的随机性。
而不是:
gmm = mixture.GaussianMixture(n_components=3)
做:
gmm = mixture.GaussianMixture(n_components=3, random_state=3)
random_state
必须是 int
:我随机将其设置为 3
但您可以选择任何其他整数。
当运行多次使用相同的random_state
时,你会得到相同的结果。